Mysql 联接表是否不为Null和Null

Mysql 联接表是否不为Null和Null,mysql,Mysql,我有4张桌子: 表1:Wilayah 表2:面积 表3:人造丝 表4:彭玉朗 如何使用单个查询连接这4个表,使结果如下所示 我期望的结果 我试过这个: SELECT penyulang_id, wilayah_name, area_name, rayon_name, penyulang_name FROM wilayah INNER JOIN area USING(wilayah_id) INNER JOIN rayon USING (wilaya

我有4张桌子:

表1:Wilayah

表2:面积

表3:人造丝

表4:彭玉朗

如何使用单个查询连接这4个表,使结果如下所示

我期望的结果

我试过这个:

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表上,并将每个列连接到相应的表。
左连接
确保在连接失败时返回数据(即Penyulang表上的值为空)

这只是将查询集中在Penyulang表上,并将每个列连接到相应的表。
左连接
确保在连接失败时返回数据(即Penyulang表上的值为空)。

尝试此操作

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
试试这个

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

看起来你想要彭玉朗的所有行

对于返回的每一行,您需要

  • 从Wilayah(基于主键)查找单行
  • 从(基于的主键)区域查找到单行
  • 从人造丝(基于主键)查找到单行
看起来您的某些外键引用为空

所以看起来你只需要使用“外部连接”。。。从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

看起来你想要彭玉朗的所有行

对于返回的每一行,您需要

  • 从Wilayah(基于主键)查找单行
  • 从(基于的主键)区域查找到单行
  • 从人造丝(基于主键)查找到单行
看起来您的某些外键引用为空

所以看起来你只需要使用“外部连接”。。。从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

从wilayah内部连接区域使用(wilayah\u id)选择penyulang\u id、wilayah\u name、area\u name、rayon\u name、penyulang\u name;从wilayah内部连接区域使用(wilayah\u id、area\u id、rayon\u id)选择penyulang\u id(wilayah\u id、area\u id、rayon\u id)
返回空请将其添加到您的问题中。
选择penyulang\u id、wilayah\u name、area\u name、area\u name、rayon\u name、rayon\u name、,来自wilayah内部连接区域的penyulang_名称使用(wilayah_id)内部连接人造丝使用(wilayah_id,区域id)内部连接penyulang使用(wilayah_id,区域id,人造丝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
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
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