我想问......
如果我有数据但数据与另一个表相关
但我希望输出显示所有数据
通常如果数据在另一个表中相关,我使用INNER JOIN但输出只是数据有关系,如果没有关系,则不显示..如果我使用LEFT JOIN或RIGHT JOIN并非显示所有数据..如果我使用UNION数据重复
这个只是示例字段..真实那么多的字段
TABLE A
ID | NAMA |
----------------------
1 | Rina |
2 | Deni |
3 | Muti |
4 | Sina |
5 | Sasa |
TABLE B
ID | Rumah |
----------------------
1 | Jabar |
2 | Jateng |
3 | Jatim |
OUTPUT THAT I WANT
ID | NAMA | Rumah
----------------------------------
1 | Rina | Jabar
2 | Deni | Jateng
3 | Muti | Jatim
4 | Sina | -
5 | Sasa | -
答案 0 :(得分:1)
如果我正确理解您的问题,那么给定的ID可能只有名字或姓氏,但不能同时具有。在这种情况下,只需执行左连接或右连接将导致数据丢失。这里的一种方法是在ID上的两个表之间进行完全外连接,然后使用COALESCE
来适当地处理可能缺少的数据。
SELECT COALESCE(t1.ID, t2.ID) AS ID,
COALESCE(t1.NAMA, '-') AS NAMA,
COALESCE(t2.Rumah, '-') AS Rumah
FROM TableA t1
LEFT JOIN TableB t2
ON t1.ID = t2.ID
UNION
SELECT COALESCE(t1.ID, t2.ID),
COALESCE(t1.NAMA, '-')
COALESCE(t2.Rumah, '-')
FROM TableA t1
RIGHT JOIN TableB t2
ON t1.ID = t2.ID
答案 1 :(得分:1)
简短版本:
SELECT COALESCE(a.ID, t2.ID),
COALESCE(a.NAMA, '-')
COALESCE(b.Rumah, '-')
FROM TableA a
LEFT JOIN TableB b
ON a.ID = b.ID
RIGHT JOIN TableB t2
ON a.ID = b.ID