Как объединить новейшие строки из таблицы? - PullRequest
4 голосов
/ 30 сентября 2008

Я часто сталкиваюсь с проблемами этой формы и еще не нашел хорошего решения:

Предположим, у нас есть две таблицы базы данных, представляющие систему электронной коммерции.

userData (userId, name, ...)
orderData (orderId, userId, orderType, createDate, ...)

Для всех пользователей в системе, выберите их пользовательскую информацию, их самую последнюю информацию о заказе с type = '1' и их самую последнюю информацию о заказе с type = '2'. Я хочу сделать это одним запросом. Вот пример результата:

(userId, name, ..., orderId1, orderType1, createDate1, ..., orderId2, orderType2, createDate2, ...)
(101, 'Bob', ..., 472, '1', '4/25/2008', ..., 382, '2', '3/2/2008', ...)

Ответы [ 11 ]

0 голосов
/ 30 сентября 2008

Их самое новое вы имеете в виду все новое в текущий день? Вы всегда можете проверить с помощью createDate и получить все данные о пользователях и заказах, если createDate> = текущий день.

SELECT * FROM
"orderData", "userData"
WHERE
"userData"."userId"  ="orderData"."userId"
AND "orderData".createDate >= current_date;

ОБНОВЛЕНО

Вот что вы хотите после вашего комментария здесь:

SELECT * FROM
"orderData", "userData"
WHERE
"userData"."userId"  ="orderData"."userId"
AND "orderData".type = '1'
AND "orderData"."orderId" = (
SELECT "orderId" FROM "orderData"
WHERE 
"orderType" = '1'
ORDER "orderId" DESC
LIMIT 1

)

...