SQL 重复加入不同的条件
SQL Repeat joins different conditions
我有两个 table。第一个 table Table0 存储每个项目的代码和该项目的名称。第二个 table Table1 存储一个 'father' 项目代码,然后存储每个父亲的多个 'child' 项目代码。
Table0 Table1
itemCode | itemName fatherCode | childCode | childNum
10101 | Item 1 10101 | 20101 | 1
20101 | Sub-item 1 10101 | 20102 | 2
20102 | Sub-item 2
children 的目的是显示需要哪些组成项目来组成父亲之一。 Table0 还存储了每个 children 项目的代码和名称。
我想显示父亲的代码和姓名,然后在父亲旁边显示每个 child 的代码和姓名。
我追求的是这样的:
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
我认为这里不需要任何左连接。我认为只是您需要围绕 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
我有两个 table。第一个 table Table0 存储每个项目的代码和该项目的名称。第二个 table Table1 存储一个 'father' 项目代码,然后存储每个父亲的多个 'child' 项目代码。
Table0 Table1
itemCode | itemName fatherCode | childCode | childNum
10101 | Item 1 10101 | 20101 | 1
20101 | Sub-item 1 10101 | 20102 | 2
20102 | Sub-item 2
children 的目的是显示需要哪些组成项目来组成父亲之一。 Table0 还存储了每个 children 项目的代码和名称。
我想显示父亲的代码和姓名,然后在父亲旁边显示每个 child 的代码和姓名。
我追求的是这样的:
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
我认为这里不需要任何左连接。我认为只是您需要围绕 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