在mysql中联接3个表时获取null



所以,这是我的表,我想使用join查询连接3个表,但在某些列上总是为null,

mst_urusan+------------+------------------------+|uid_urusan|urusan|+------------+------------------------+|1|PANGAN||2|收入和收入||3|坦桑尼亚|+------------+------------------------+mst_program+-------------+------------------------------------------------------------------------------+------------+|uid_program|program|uid_urusan|+-------------+------------------------------------------------------------------------------+------------+|11 |塔塔电力公司项目|1||12 |社区、地区和社区发展计划|1||13 |资源和环境可持续发展计划|1||14 | Perikanan项目生产活动|2||15 |项目生产活动对国家和地区的影响|3|+-------------+------------------------------------------------------------------------------+------------+mst_kegiatan+--------------+-----------------------------------------------------------------------------+------------+-------------+|uid_kegiatan|kegiata|uid_urusan|uid_program|+--------------+-----------------------------------------------------------------------------+------------+-------------+|1|堪萨斯州行政管理局|1|1||2|Peningkatan Sarana and Prasarana Apartatur |1|1||3|1|1||4|Peningkatan Ketersediaan Pangan |1|2||5|Koordinasi、Pemantau和Pemantapan Pangan District||6|Penanganan Kerawanan Pangan |1|3||7|多样化的发展和发展|1|3||8|Pengawasan Keamanan Pangan |1|3||9||2|4||10 |秘鲁生产活动|3|5||11|3|5||12|3|5|+--------------+-----------------------------------------------------------------------------+------------+-------------+

我尝试使用JOIN,但在列上有一些null

选择`mst_usan``urusan`,`mst_program``程序`,`mst_kegiatan``kegiatan`来自`mst_kegiatan`左外JOIN `mst_usersan`ON(`mst_kegiatan`.`uid_urusan`=`mst_ursan`.`guid_urusan`)LEFT OUTER JOIN `mst_program`ON(`mst_kegiatan`.`uid_program`=`mst_procram`.`guid_program`)

结果如下,

+------------------------+---------+-----------------------------------------------------------------------------+|乌鲁桑项目|+------------------------+---------+-----------------------------------------------------------------------------+|PANGAN|NULL|Pelayanan Administratistrasi Perkantoran||PANGAN|NULL |公寓租金上涨||PANGAN|NULL |大城市公寓的资本和投资增长||PANGAN|NUL|Peningkatan Ketersediaan PANGAN||PANGAN|NUL|Koordinasi、Pemantau和Pemantapan地区||PANGAN|NULL|Penanganan Kerawanan PANGAN||PANGAN|NULL | PANGAN的多元化||PANGAN|NULL | Pangawasan Keamanan PANGAN||许可证和许可证|NULL |许可证的签署和批准||秘鲁|NULL |秘鲁生产活动||业主|NULL |业主和承包商||PERTANIAN|NUL|PERTANIAN和Perikanan Terpadu|+------------------------+---------+-----------------------------------------------------------------------------+

我想要下面这样的结果,有什么建议吗?https://i.stack.imgur.com/jO1Tc.png

就示例数据而言,您似乎希望在列uid_urusan而不是uid_program上加入mst_program

如果是,请考虑:

SELECT 
u.`urusan`,
p.`program`,
k.`kegiatan`
FROM
`mst_kegiatan` k
LEFT OUTER JOIN `mst_urusan` u  ON k.`uid_urusan` = u.`uid_urusan`
LEFT OUTER JOIN `mst_program` p ON k.`uid_urusan` = p.`uid_urusan`

请注意,我修改了您的查询以使用表别名:这使查询更易于读取和写入。

kegiatan中没有uid_program,改变连接表的顺序可能会导致程序列的数据

SELECT 
`mst_urusan`.`urusan`,
`mst_program`.`program`,
`mst_kegiatan`.`kegiatan`
FROM
`mst_urusan` 
LEFT OUTER JOIN `mst_program` ON (`mst_program`.`uid_urusan` = `mst_urusan`.`uid_urusan`)
LEFT OUTER JOIN `mst_kegiatan` ON (`mst_kegiatan`.`uid_program` = `mst_program`.`uid_program`)

相关内容

  • 没有找到相关文章