【问题标题】:How do I use SQL Server to use a single column to fill two separate columns in another table?如何使用 SQL Server 使用单个列来填充另一个表中的两个单独的列?
【发布时间】:2013-03-07 21:39:44
【问题描述】:

我有两张桌子:

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

Accessory 表中的两列都与Products 表中的ItemID 列相匹配。 如何让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

【问题讨论】:

  • @User .....您需要更具体地描述您的表格。请显示表名并包括每个表名的所有列。然后在谈到列名时,用表名对其进行限定......即 Products.[ItemID], Accessory.[PartItemId]。这将使您的问题更清楚
  • JOIN两张表
  • 您能否解释(或重新表述)以下内容:“Accessory 表中的两列Products 表中的ItemID 列相匹配”。跨度>
  • 假设ProductID 列实际上表达的是产品名称是否正确?

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


【解决方案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

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

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多