У меня есть база данных SQL Server 2008. В этой базе данных есть таблица Product, Order и OrderProduct. Эти три таблицы выглядят следующим образом:
Product
-------
ID
Name
Description
Order
-----
ID
OrderDate
Status
OrderProduct
------------
OrderID
ProductID
Quantity
Я пытаюсь определить три последних уникальных товара, которые заказал человек. Тем не менее, мне также нужно указать дату последнего заказа продукта. Моя проблема в том, что я продолжаю получать такой набор результатов:
банка бобов (10.10.2011)
Сода (10/09/2011)
Банка с фасолью (08.10.2011)
Второй «Банки с фасолью» быть не должно, потому что я уже показывал «Банку с фасолью». Мой запрос выглядит так:
SELECT TOP 3 DISTINCT
p.[Name],
o.[OrderDate]
FROM
[Product] p,
[Order] o
[OrderProduct] l
WHERE
l.[ProductID]=p.[ID] and
l.[OrderID]=o.[ID]
ORDER BY
o.[OrderDate] DESC
Я понимаю, что причина, по которой DISTINCT не будет работать, заключается в том, что даты заказа отличаются. Однако я не уверен, как это исправить. Может кто-нибудь сказать мне, как это исправить?