SQL Repeat加入不同的条件

时间:2016-09-08 12:52:13

标签: sql sql-server join sql-server-2016

我有两张桌子。第一个表Table0存储每个项目的代码和该项目的名称。第二个表Table1存储“父亲”项目代码,然后存储每个父亲的多个“子”项目代码。

Table0                                 Table1
itemCode | itemName                    fatherCode | childCode | childNum
10101    | Item 1                      10101      | 20101     |  1
20101    | Sub-item 1                  10101      | 20102     |  2
20102    | Sub-item 2

孩子们的目的是展示构成父亲之一所需的构成物品。 Table0还存储每个子项的代码和名称。

我想显示父亲的代码和名字,然后是父亲旁边每个孩子的代码和名字。

我所追求的是这样的:

fatherCode | itemName | childCode | itemName2  | childNum
10101      | Item 1   | 20101     | Sub-item 1 | 1
10101      | Item 1   | 20102     | Sub-item 2 | 2

我猜这是一个简单的例子,只是重复连接但是条件不同,但是itemName2列只是重复第一个itemName中的内容。

我尝试过但哪些不起作用:

SELECT
T0.ItemCode,
T0.ItemName,
T1.Code,
T2.ItemName,
T1.Quantity,
T1.ChildNum

FROM Table0 T0
LEFT JOIN Table1 T1 ON T1.Father = T0.ItemCode
INNER JOIN Table0 T2 ON T2.ItemName = T0.ItemName
LEFT JOIN Table1 T3 ON T3.Code = T2.ItemCode

WHERE T1.ChildNum IS NOT NULL

ORDER BY T1.ItemCode

1 个答案:

答案 0 :(得分:1)

我认为你不需要任何左连接。我认为只需要围绕table1而不是table0构建查询。

select t.fatherCode, f.itemName, t.childCode, c.itemName as itemName2, t.childNum
  from Table1 t
  join Table0 f
    on f.itemCode = t.fatherCode
  join Table0 c
    on c.itemCode = t.childCode