如何将一列多次连接到多列? - 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

我认为这需要 JOINUNION 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

但是,我想说这些关系的基数看起来很粗略。我会修改数据库模型设计。