首页 > 解决方案 > MYSQL 两个内部连接不产生结果

问题描述

我有 3 个与 id 连接的表,其构造如下:

RAD table
rad_id      strp_ID     strf_ID
1               1           null
2               1           null
3           null            3
4           null            4
5           null            4

STRANKEP table
strp_ID     strp_NAZIV
1           data1
2           data2
3           data3

STRANKEF table
strf_ID     strf_NAZIV
1           data1
2           data2
3           data3
4           data4

我试图获得例如 strf_NAZIV 女巫的值是 data4,以防 rad_id=4。因为 rad_id=4 具有 strf_ID=4 并且在 STRANKEF 表中 stf_ID=4 具有 data4 值。

rad_id=4 的示例采石场是:

SELECT rad_id, strp_NAZIV, strf_NAZIV FROM RAD 
INNER JOIN STRANKEP ON RAD.strp_ID=STRANKEP.strp_ID 
INNER JOIN STRANKEF ON RAD.strf_ID=STRANKEF.strf_ID 
WHERE rad_id = 4;

当我运行采石场时,我得到 0 行结果,没有错误和正确的列。我无法理解这一点,请指教。

rad_id strp_NAZIV strf_NAZIV
0 rows

标签: mysqlsqldatabaseinner-join

解决方案


好的,第一件事是内部连接仅返回两个表中都存在元组属性的结果,当其中一个表包含例如 RAD 的空值时,将不会返回 ID 为 3、4、5 的元组,来自第一个内部连接的结果以及来自第二个的 1 和 2。更多参考:

https://www.w3schools.com/SQL/sql_join_inner.asp

尝试使用外部联接而不是内部联接来获取具有空值的结果。


推荐阅读