如何使用SQL Server使用单个列填充另一个表中的两个单独的列?

时间:2013-03-07 21:39:44

标签: sql sql-server sql-server-2008 multiple-columns

我有两张桌子:

dbo.Products [ItemID] [ProductID]
dbo.Accessory [PartItemID] [AccessoryItemID]

Accessory表中的两列与ItemID表中的Products列相匹配。 如何让Accessory表格显示相应的ProductID,而不是PartItemIDAccessoryItemID

例如:

ItemID=1, ProductID=Part, PartItemID=1,AccessoryItemID=5
ItemID=5, ProductID=Accessory, PartItemID=5, AccessoryItemID=NULL

我希望输出看起来像这样:

ProductID=Part, PartItemID=1, Accessory=Accessory, AccessoryItemID=5

1 个答案:

答案 0 :(得分:1)

正如@ PM77-1所说,但更具体地说,JOIN在你的所有密钥上都是必要的。您可以多次加入同一个表。

在你的情况下:

SELECT p1.ProductID as PartItem
     , a.PartItemID
     , p2.ProductID as AccessoryItem
     , a.AccessoryItemID
  FROM dbo.Accessory a
  LEFT JOIN dbo.Products p1
       ON p1.ItemID = a.PartItemID
  LEFT JOIN dbo.Products p2
       ON p1.ItemID = a.AccessoryItemID

这将在附件表中的每行输出相应的产品作为零件和附件。