我有 4 个表:
Table 1: Wilayah
wilayah_id wilayah_name
1 wilayah_1
2 wilayah_2
Table 2: Area
area_id wilayah_id area_name
1 1 area_1
2 1 area_2
3 2 area_3
4 1 area_4
Table 3: Rayon
rayon_id wilayah_id area_id rayon_name
1 1 1 rayon_1
2 2 3 rayon_2
Table 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 个表,以便结果看起来像这样?
Result that I expect.
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)
但显示空结果
最佳答案
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 表上的值为空)。
关于mysql - Join Table whether Not Null and Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512493/