DISTINCT ON
дает вам точно первый ряд упорядоченной группы. В вашем примере группа является частью id
и date
метки времени login_date
SELECT DISTINCT ON (id, login_date::date)
*
FROM (
--
) s
ORDER BY id, login_date::date, login_date
Объяснение из ORDER BY
предложения:
Вы должны упорядочить по столбцам DISTINCT
в первую очередь. Но в вашем случае вы не хотите заказывать только по дате, но и по времени. Таким образом, после упорядочения по дате (что необходимо из-за ваших DISTINCT
столбцов) вы должны упорядочить также по отметке времени.
Таким образом, весь запрос может быть упрощен до (без подзапроса):
SELECT DISTINCT ON (a.id, ah.modified::date)
a.id,
username,
email,
ah.modified as login_date
FROM accounts a
JOIN account_history ah
ON modified_acc_id = a.id
WHERE ah.data::jsonb->>'message' = 'Logon'
ORDER BY a.id, ah.modified::date, ah.modified
ОПЦИИ взяты из http://www.w3.org/TR/cors/ См. http://metajack.im/2010/01/ 19 / crossdomain-ajax-for-xmpp-http-binding-made-easy / для получения дополнительной информации
Я смог исправить это с помощью следующих заголовков
Access-Control-Allow-Origin
Access-Control-Allow-Headers
Access-Control-Allow-Credentials
Access-Control-Allow-Methods
Если вы используете Nodejs, вот код, который вы можете скопировать / вставить.
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin','*');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH');
next();
});
Фактически, междоменные запросы AJAX (XMLHttp) не разрешены из соображений безопасности (подумайте о том, чтобы получить "ограниченную" веб-страницу со стороны клиента и отправить ее обратно на сервер - это будет проблемой безопасности).
Единственный обходной путь - обратные вызовы. Это: создание нового объекта сценария и указание src на конечный JavaScript, который является обратным вызовом со значениями JSON (myFunction ({data}), myFunction - это функция, которая что-то делает с данными (например, сохраняет их в переменной).
Я не верю, что jQuery естественным образом выполнит запрос JSONP, если ему будет предоставлен такой URL. Однако он выполнит запрос JSONP, когда вы сообщите ему, какой аргумент использовать для обратного вызова:
$.get("http://metaward.com/import/http://metaward.com/u/ptarjan?jsoncallback=?", function(data) {
alert(data);
});
Это полностью зависит от принимающего сценария, чтобы использовать этот аргумент (который не должен называться "jsoncallback") , поэтому в этом случае функция никогда не будет вызвана. Но, поскольку вы заявили, что просто хотите, чтобы скрипт на metaward.com был выполнен, это сделает его.
Похоже, Firefox и Opera (также протестированные на Mac) не любят кросс-доменность (но Safari это устраивает).
Возможно, вам придется вызвать код на стороне локального сервера, чтобы свернуть удаленную страницу.