asp.net Web Api 2 POST [дубликат]

На первый взгляд ...

Все, что вам нужно, - это предложение GROUP BY с агрегатной функцией MAX:

SELECT id, MAX(rev)
FROM YourTable
GROUP BY id

Это никогда не бывает так просто, это ?

Я просто заметил, что вам нужен столбец content.

Это очень распространенный вопрос в SQL: найти все данные для строки с некоторым максимальным значением в столбца на один идентификатор группы. Я много слышал о своей карьере. На самом деле, это был один из вопросов, которые я ответил в техническом интервью моей текущей работы.

На самом деле настолько распространено, что сообщество StackOverflow создало один тег только для решения таких вопросов: .

В принципе, у вас есть два подхода к решению этой проблемы:

Соединение с простым group-identifier, max-value-in-group Sub-query

В этом подходе вы сначала найдете group-identifier, max-value-in-group (уже решены выше) в подзапросе. Затем вы присоединяетесь к своей таблице к подзапросу с равенством как на group-identifier, так и на max-value-in-group:

SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
    SELECT id, MAX(rev) rev
    FROM YourTable
    GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev

Левое соединение с помощью себя, настройки условий и фильтров

In этот подход, вы оставили присоединиться к таблице с собой. Равенство, конечно, идет в group-identifier. Затем два умных перемещения:

  1. Второе условие соединения имеет значение слева ниже правого значения
  2. . Когда вы делаете шаг 1, строки (строки), которые на самом деле имеют максимальное значение будет иметь NULL в правой части (это LEFT JOIN, помните?). Затем мы фильтруем объединенный результат, показывая только строки, где правая сторона NULL.

Итак, вы закончите:

SELECT a.*
FROM YourTable a
LEFT OUTER JOIN YourTable b
    ON a.id = b.id AND a.rev < b.rev
WHERE b.id IS NULL;

Заключение

Оба подхода приносят точный результат.

Если у вас есть две строки с max-value-in-group для group-identifier, обе строки будут в результате в обоих подходах.

Оба подхода совместимы с SQL ANSI, таким образом, будут работать с вашей любимой РСУБД, независимо от ее «вкуса».

Оба подхода также дружелюбны к производительности, однако ваш пробег может варьироваться (РСУБД, структура БД, индексы и т. д.). Поэтому, когда вы выбираете один подход над другим, benchmark . И убедитесь, что вы выбрали тот, который вам больше всего подходит.

40
задан Mayank Modi 7 July 2015 в 18:09
поделиться

5 ответов

в вашем запросе ajax, добавив:

dataType: "jsonp",

после строки:

type: 'GET',

должен решить эту проблему ..

надеюсь, что эта помощь вам поможет

8
ответ дан Pegasus Cozza 26 August 2018 в 21:26
поделиться

У вас должна возникнуть идея, почему вы получаете эту проблему после прохождения вышеупомянутых ответов.

self.send_header('Access-Control-Allow-Origin', '*')

Вам просто нужно добавить указанную выше строку на стороне вашего сервера.

0
ответ дан Raghvendra Singh 26 August 2018 в 21:26
поделиться

Вы должны изменить код вашей серверной части, как указано ниже

public class CorsResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext,   ContainerResponseContext responseContext)
    throws IOException {
        responseContext.getHeaders().add("Access-Control-Allow-Origin","*");
        responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");

  }
}
2
ответ дан Ritesh Kumar 26 August 2018 в 21:26
поделиться

Это происходит, когда вы пытаетесь получить доступ к ресурсам другого домена.

Это функция безопасности, позволяющая избежать свободного доступа к любым ресурсам этого домена (к которым можно получить доступ, например, для получения точной копии ваш сайт в пиратском домене.)

Заголовок ответа, даже если он 200OK не позволяет другим источникам (доменам, портам) обращаться к ресурсам ressources.

Вы можете исправить эта проблема, если вы являетесь владельцем обоих доменов:

Решение 1: через .htaccess

Чтобы изменить это, вы можете записать это в .htaccess запрошенного файла домена:

    <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    </IfModule>

Решение 2: установите заголовки правильным способом

Если вы установите это в заголовок ответа запрошенного файла, вы разрешите всем получить доступ к ресурсам ressources:

Access-Control-Allow-Origin : *

ИЛИ

Access-Control-Allow-Origin : http://www.my-domain.com

Мир и код;)

29
ответ дан Sébastien Garcia-Roméo 26 August 2018 в 21:26
поделиться

Ваш браузер не разрешает ваш запрос .. вам нужно установить аддон вашего веб-браузера

Для Chrome: https://chrome.google.com/webstore/detail/allow-control- allow-origi / nlfbmbojpeacfghkpbjhddihlkkiljbi? hl = ru

Для Firefox https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/

-11
ответ дан Sourav Golui 26 August 2018 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: