如何将一列多次连接到多列? - SQL
How to join one column multiple times to many columns? - SQL
我有两个表:
t1:
| parent | main | child
| ------- | ---- | ------
| A | B | NULL
| B | C | NULL
| NULL | C | D
t2:
| letter | num |
| ------- | ---- |
| A | 1 |
| A | 2 |
| B | 7 |
| C | 12 |
| D | 14 |
我想要这样的输出:
output:
| parent | parent_num | main | main_num | child | child_num
| ------- | ---------- | ------ | -------- | ----- | ---------
| A | 1 | B | 7 | NULL | NULL
| A | 2 | B | 7 | NULL | NULL
| B | 7 | C | 12 | NULL | NULL
| NULL | NULL | C | 12 | D | 14
我认为这需要 JOIN
和 UNION ALL
,但我不知道如何将所有内容组合在一起。我很困惑,因为我们需要每行加入多次。
非常感谢任何帮助,谢谢
你可以这样做:
select
t1.parent, p.num as parent_num,
t1.main, m.num as main_num,
t1.child, c.num as child_num
from t1
left join t2 p on p.letter = t1.parent
left join t2 m on m.letter = t1.main
left join t2 c on c.letter = t1.child
但是,我想说这些关系的基数看起来很粗略。我会修改数据库模型设计。
我有两个表:
t1:
| parent | main | child
| ------- | ---- | ------
| A | B | NULL
| B | C | NULL
| NULL | C | D
t2:
| letter | num |
| ------- | ---- |
| A | 1 |
| A | 2 |
| B | 7 |
| C | 12 |
| D | 14 |
我想要这样的输出:
output:
| parent | parent_num | main | main_num | child | child_num
| ------- | ---------- | ------ | -------- | ----- | ---------
| A | 1 | B | 7 | NULL | NULL
| A | 2 | B | 7 | NULL | NULL
| B | 7 | C | 12 | NULL | NULL
| NULL | NULL | C | 12 | D | 14
我认为这需要 JOIN
和 UNION ALL
,但我不知道如何将所有内容组合在一起。我很困惑,因为我们需要每行加入多次。
非常感谢任何帮助,谢谢
你可以这样做:
select
t1.parent, p.num as parent_num,
t1.main, m.num as main_num,
t1.child, c.num as child_num
from t1
left join t2 p on p.letter = t1.parent
left join t2 m on m.letter = t1.main
left join t2 c on c.letter = t1.child
但是,我想说这些关系的基数看起来很粗略。我会修改数据库模型设计。