这些是我的表格:
Order
-Id PK
-Timestamp
-Seller
-Buyer
OrderItem
-Id PK
-OrderId FK
-ProductId FK
-AccessoryId FK
Products
-Id PK
-Name
-Price
Accessories
-Id PK
-Name
-Price
ProductAccessories
-Id PK
-ProductId FK
-AccessoryId FK
现在,我有以下查询来获取至少1年的所有订单:
SELECT [Id]
,[Timestamp]
,[Seller]
,[Buyer]
FROM [dbo].[Order]
WHERE Timestamp <= getdate()-365
现在是我的问题。运行此查询后,我需要另一个帮助。 我想获取所有具有forgein键的产品的附件,该附件属于通过上述查询检索的特定OrderId的一部分。
我无法确定我必须在这里进行多少次联接。
答案 0 :(得分:0)
这需要很多JOIN
,但是我想这就是你想要的
SELECT a.*
FROM [dbo].[Order] o
JOIN OrderItem oi ON oi.OrderId = o.Id
JOIN Products p ON p.Id = oi.ProductId
JOIN ProductAccessories pa ON pa.ProductId = p.Id
JOIN Accessories a ON a.Id = pa.AccessoryId
WHERE o.[Timestamp] <= DATEADD(year, -1, GETDATE())