我遇到了以下问题。 有两个表:
银行
bank_id [PK] | name
---------------------
1 Bank_1
2 Bank_2
3 Bank_3
4 Department_1
5 Department_2
6 Department_3
关系
id [PK] | parent_id | filial_id
--------------------------------
1 1 5
2 2 4
3 2 6
需要选择所有银行部门对。 没有部门的银行也应该选择。
我写了以下查询:
SELECT A.name AS 'Bank', B.name AS 'Department'
FROM banks A,
banks B
JOIN relations ON B.bank_id=relations.filial_id
AND A.bank_id = relations.parent_id;
但它只显示有部门的银行。我应该如何更改查询以输出没有部门的字符串 Bank_3??
最佳答案
我认为你的表格应该如下所示
- 银行表仅包含bank_id、银行名称。其中 bank_id 将为主键。
- 部门会有单独的表格,其中包括bank_id、dept_id、dept_name
- 部门表中的bank_id将是银行表中的外键
- 部门 ID 将成为部门表中的主键
您的银行表将按如下方式划分。
bank_id bank_name
1 Bank_1
2 Bank_2
3 Bank_3
bank_id dept_id dept_name
1 4 Department_1
2 5 Department_2
2 6 Department_3
然后您可以简单地使用左连接来获取所需格式的数据。
目前,您的银行表中没有银行和部门的标识列。
关于两个表的 SQL 查询自连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199327/