我有4张桌子:
表1:Wilayah
wilayah_id wilayah_name
1 wilayah_1
2 wilayah_2
表2:面积
area_id wilayah_id area_name
1 1 area_1
2 1 area_2
3 2 area_3
4 1 area_4
表3:人造丝
rayon_id wilayah_id area_id rayon_name
1 1 1 rayon_1
2 2 3 rayon_2
表4:Penyulang
penyulang_id wilayah_id area_id rayon_id penyulang_name
1 1 1 null penyulang_1
2 1 null 1 penyulang_2
3 2 3 null penyulang_3
如何使用单个查询连接这4个表,结果将如下所示?
我期待的结果。
penyulang_id wilayah_name area_name rayon_name penyulang_name
1 wilayah_1 area_1 null penyulang_1
2 wilayah_1 null rayon_1 penyulang_2
3 wilayah_2 area_3 null penyulang_3
我试过了:
SELECT
penyulang_id,
wilayah_name,
area_name,
rayon_name,
penyulang_name
FROM
wilayah
INNER JOIN area USING(wilayah_id)
INNER JOIN rayon USING (wilayah_id, area_id)
INNER JOIN penyulang USING (wilayah_id, area_id,rayon_id)
但显示空结果
答案 0 :(得分:0)
试试这个
select t4.penyulang_id,t1.wilayah_name,t2.area_name,t3.rayon_name,
t4.penyulang_name
from wilayah t1 inner join area t2 on t1.wilayah_id =t2.t1.wilayah_id
inner join rayon t3 on t2.wilayah_id =t3.wilayah_id
inner join penyulang t4 on t3.wilayah_id = t4.wilayah_id
答案 1 :(得分:0)
看起来你想要Penyulang的所有行。
对于返回的每一行,您需要
看起来你的一些外键引用是NULL。
所以看起来你只需要使用“外连接”......即使其他表中没有匹配的行,也要从Penyulang返回该行。
LEFT
关键字指定外部联接操作,即使未返回右侧匹配的行,也会返回左侧的行。
SELECT p.penyulang_id
, w.wilayah_name
, a.area_name
, r.rayon_name
, w.penyulang_name
FROM Penyulang p
LEFT
JOIN Wilayah w
ON w.wilayah_id = p.wilayah_id
LEFT
JOIN Area a
ON a.area_id = p.area_id
LEFT
JOIN Rayon r
ON r.rayon_id = r.rayon_id
ORDER BY p.penyulang_id