将配件与订单中的产品相结合

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())