我有四张桌子:
表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_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)但显示空结果
发布于 2016-04-09 04:48:50
SELECT
penyulang_id,
wilayah_name,
area_name,
rayon_name,
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=p.rayon_id
ORDER BY penyulang_id ASC这只是将查询集中在Penyulang表上,并将每一列连接到相应的表。如果连接失败,LEFT JOIN将确保返回数据(即Penyulang表上的值为null)。
发布于 2016-04-09 04:51:35
尝尝这个
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发布于 2016-04-09 04:54:41
看来你想把所有的行都从Penyulang。
对于返回的每一行,您希望
看起来您的一些外键引用是空的。
看来你只需要用“外部连接”..。从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_idhttps://stackoverflow.com/questions/36512493
复制相似问题