将配件与订单中的产品相结合
Joining accessories with products from a order
这些是我的表格:
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
现在回答我的问题。在 运行 这个查询之后我需要另一个帮助。 我想获取所有具有产品伪造密钥的配件,该产品是上述查询检索到的特定 OrderId 的一部分。
我无法理解我必须在这里进行多少次连接。
这需要很多 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())
这些是我的表格:
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
现在回答我的问题。在 运行 这个查询之后我需要另一个帮助。 我想获取所有具有产品伪造密钥的配件,该产品是上述查询检索到的特定 OrderId 的一部分。
我无法理解我必须在这里进行多少次连接。
这需要很多 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())