You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter Model双表关联查询:无匹配数据返回null的实现问题

解决tb_form与tb_pendaftaran关联查询的缺失记录问题

嘿,我来帮你搞定这个问题!你遇到的异常根源其实是连接类型用错了——如果之前用的是内连接,那在场景2里必然会丢失tb_form中没有对应tb_pendaftaran记录的数据,这完全不符合你要保留所有judul的需求。

正确的SQL实现方案

你需要用**左连接(LEFT JOIN)**来实现需求,把tb_form作为左表,确保它的所有记录都能被保留,没有匹配的tb_pendaftaran记录时,value字段自动返回null:

SELECT 
    f.judul,
    p.value
FROM 
    tb_form f
LEFT JOIN 
    tb_pendaftaran p ON f.id_form = p.id_form;

为什么这个写法能解决问题?

  • LEFT JOIN的核心逻辑是:强制保留左表(tb_form)的所有行,右表(tb_pendaftaran)中能匹配上id_form的就返回对应的value,匹配不上的字段就用null填充。
  • 不管是场景1(所有id_form都有匹配)还是场景2(仅部分匹配),这个查询都能返回tb_form的全部judul,完美贴合你的需求。

对比错误写法(你大概率之前用的是这个)

如果之前用的是内连接,就会出现场景2的异常:

-- 错误写法:仅返回两边都存在匹配的记录
SELECT 
    f.judul,
    p.value
FROM 
    tb_form f
INNER JOIN 
    tb_pendaftaran p ON f.id_form = p.id_form;

这个查询在场景2里只会返回3条匹配的记录,剩下2条tb_form的记录会被直接丢弃,这就是你遇到异常的原因。

内容的提问来源于stack exchange,提问作者Raven Choi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:05:24