内部将一个字段连接到表中的多个列

see*_*ker 3 sql sql-server-2008

我有一个SQL表,用于保存买家个人数据,如FirstName,LastName,OGCard; OGCard - 表示客户个人卡号的字段.

接下来我有一张名为Cards的表,其中包含以下格式购买的十件物品的数据:OGCard,Item1ID,...,Item10ID,Item1Quantity,...,Item10Quantity

在表项中,我得到了这样的结构ItemID,ItemName

我想从CardNumber购买所有商品

我想我应该这样做

SELECT Buyers.FirstName, Items.Name, Cards.Item1Quantity
FROM Buyers
INNER JOIN Cards ON Buyers.OGCard=Cards.OGCard
INNER JOIN Items ON Cards.Item1ID=Items.ItemName
WHERE OGCard=13451
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以看到第一个项目的名称和数量.但是我无法对列Item2ID执行相同的连接,依此类推.你能给我一些解决方案吗?

Gri*_*xly 6

在不知道如何设置Items表的情况下,您可以执行以下操作:

SELECT Buyers.FirstName
     , Items.Name
     , Cards.Item1Quantity 
     , C2.Item2Quantity
     , C3.Item3Quantity
     , C4.Item4Quantity
     , C5.Item5Quantity
     , C6.Item6Quantity
     , C7.Item7Quantity
     , C8.Item8Quantity
     , C9.Item9Quantity
     , C10.Item10Quantity 
  FROM Buyers 
 INNER JOIN Cards ON Buyers.OGCard=Cards.OGCard 
 INNER JOIN Items ON Cards.Item1ID=Items.ItemName  
  LEFT OUTER JOIN Items ON Cards.Item2D=Items.ItemName C2
  LEFT OUTER JOIN Items ON Cards.Item3D=Items.ItemName C3
  LEFT OUTER JOIN Items ON Cards.Item4D=Items.ItemName C4
  LEFT OUTER JOIN Items ON Cards.Item5D=Items.ItemName C5
  LEFT OUTER JOIN Items ON Cards.Item6D=Items.ItemName C6
  LEFT OUTER JOIN Items ON Cards.Item7D=Items.ItemName C7
  LEFT OUTER JOIN Items ON Cards.Item8D=Items.ItemName C8
  LEFT OUTER JOIN Items ON Cards.Item9D=Items.ItemName C9
  LEFT OUTER JOIN Items ON Cards.Item10D=Items.ItemName C10
 WHERE OGCard=13451 
Run Code Online (Sandbox Code Playgroud)

没有表格布局,这只是一个猜测,我猜如果这有效,你需要看看架构是如何布局的......