在SQL

时间:2016-07-12 18:42:59

标签: mysql sql join

在SQL中连接水平和垂直表的最佳方法是什么? (即在这种情况下,加入两个表的ItemID)

我有一张像这样的表:

enter image description here

另一张表是这样的:

Table 2

理想情况下,我想将它们安排成这样的东西:

OrderID ItemID ClientID描述数量价格

基于OrderID加入这两种不同类型表的最简单方法是什么?

现在我首先将项目表从垂直转换为水平,然后加入2个表。但这会成为很多代码行。只是想知道是否有更简单的方法。谢谢!

2 个答案:

答案 0 :(得分:1)

垂直表上的多个内连接

 select a.OrderID, a.ItemID, a.ClientID, b.Description c.Quantity d.Price
 from table2 as a
 inner join table1 as b on a.itemID = b.itemID and b.element = 'Description'
 inner join table1 as c on a.itemID = c.itemID and c.element = 'Quantity'
 inner join table1 as d on a.itemID = d.itemID and d.element = 'Price'

答案 1 :(得分:0)

您可以在Sql server中使用Pivot。请参阅下面的代码段。

选择 订单ID,项ID,客户端ID, [说明],数量,价格 从 (   SELECT OrderID,i.ItemID,ClientID,ielement,i.details   来自项目i   INNER JOIN订购a     ON i.itemid = a.itemid )src 枢 (   MAX(详情)   FOR元素([描述],数量,价格) )枢纽