我有两个表,“hierarchy_table”和“name_table”。
层次结构表包含一个具有多个父级和子级的对象。每个父级和子级都由 id 引用。
| object_id | parent_id_1 | parent_id_2 | child_id_1 | child_id_2 |
-----------------------------------------------------------------------------
| 1234 | 9999 | 9567 | 5555 | 5556 |
-----------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
hierarchy_table 中的每个对象 id 在 name_table 中都有一个条目:
| name_id | name |
--------------------------
| 1234 | ABCD |
--------------------------
| 9999 | ZYXW |
--------------------------
| ...
Run Code Online (Sandbox Code Playgroud)
如何将hierarchy_table 中的每个id 多次加入name_table,以便我可以得到填充每个名称的结果?
像这样:
| object | parent_1 | parent_2 | child_1 | child_2 |
-----------------------------------------------------------------------------
| ABCD | ZYXW | BBBB | CCCC | DDDD |
-----------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
注意:示例中的表名只是为了清晰/简单起见,真实名称具有专有名称。
ype*_*eᵀᴹ 14
在hierarchy_table
所有参考的有5列name_table
,所以你需要5联接。最好使用LEFT
连接而不是INNER
,以防其中一些列可以为空并且您仍然希望返回行:
SELECT
o.name AS object,
p1.name AS parent_1,
p2.name AS parent_2,
c1.name AS child_1,
c2.name AS child_2
FROM
hierarchy_table AS h
LEFT JOIN name_table AS o ON h.object_id = o.name_id
LEFT JOIN name_table AS p1 ON h.parent_id_1 = p1.name_id
LEFT JOIN name_table AS p2 ON h.parent_id_2 = p2.name_id
LEFT JOIN name_table AS c1 ON h.child_id_1 = c1.name_id
LEFT JOIN name_table AS c2 ON h.child_id_2 = c2.name_id ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
60135 次 |
最近记录: |