【发布时间】:2017-06-27 17:59:55
【问题描述】:
我有 3 个具有外键 ACCOUNT_NO 的表,第一个表是 CREDIT_LIST,其中包含从银行提取的所有信用,第二个表是 CUSTOMERS 保存客户信息,最后一个是 ACCOUNTS 保存有关帐户本身的所有信息。当我尝试选择时
SELECT
B.CUSTOMER_NO AS CUSTOMER_NO,
B.CREDIT_TYPE AS CREDIT_TYPE,
B.ACCOUNT_NO AS CREDIT_ACCOUNT_NUMBER,
A.BRANCH_CODE AS BRANCH_CODE,
C.EXTERNAL_ACCOUNT_NO AS EXTERNAL_ACCOUNT_NUMBER
FROM
CREDIT_LIST B,
CUSTOMERS A,
ACCOUNTS C
WHERE
B.STATUS = 'A' -- ACTIVE
AND A.CUSTOMER_NO = B.CUSTOMER_NO
AND C.ACCOUNT_NO = B.ACCOUNT_NO
;
我得到零结果,因为 ACCOUNTS 中没有 EXTERNAL_ACCOUNT_NO,它具有 c.account_no = b.account_no。问题是即使没有 EXTERNAL_ACCOUNT_NO 我也想显示信息并用 null 填充它,例如:
| CUSTOMER_NO | CREDIT_TYPE | CREDIT_ACCOUNT_NUMBER | BRANCH_CODE | EXTERNAL_ACCOUNT_NUMBER
+-------------+-------------+-----------------------+-------------+------------------------
| 1 | some_type | 123456 | 01 |
| 2 | some_type | 654321 | 01 | 111111111111
我觉得这非常愚蠢,但无法弄清楚我到底做错了什么
【问题讨论】:
-
使用显式连接而不是过时的旧式连接
-
然后使用
LEFT JOIN