首页 > 解决方案 > 当其中一个表中没有记录时,不显示记录

问题描述

我正在使用Join查询从多个正在工作的表中获取数据。

现在我的问题是,当其中一个表(tbl_Fees 或membership_details)中没有记录时,我没有得到记录。有时我会出错。它应该至少显示我的members记录。

我试过下面的代码

模型

public function Memberinfo(){
   $getDetails = array('members.member_id'=>$this->session->userdata['login_session']['id'],'members.is_status'=>1);
   $result = $this->db->where($getDetails)
                      ->select('*')
                      ->from('members')
                      ->join('membership_details', 'members.member_id = membership_details.member_id','LEFT')
                      ->join('tbl_Fees', 'membership_details.Fees_id = tbl_Fees.Fees_id')
                      ->get()
                      ->row();
                return $result;

        } 

你会帮我解决这个问题吗?

标签: phpmysqlcodeigniter-3

解决方案


正如评论者指出的那样,这是因为您指定了加入。使用JOIN将默认为内部连接 ​​- 因此你没有得到你想要的结果。

以下是 SQL 中可用的不同类型的 JOIN:

(INNER) JOIN: 返回两个表中具有匹配值的记录

LEFT (OUTER) JOIN: 返回左表的所有记录,以及右表匹配的记录

RIGHT (OUTER) JOIN: 从右表返回所有记录,从左表返回匹配的记录

FULL (OUTER) JOIN: 当左表或右表匹配时返回所有记录

作为参考,请参阅下面的图片,它可以帮助您更轻松地可视化连接。

INNER JOIN 示例 左连接示例 右连接示例

最后,您可能正在寻找的加入:

INNER JOIN 示例

这应该足以让您更正代码。


推荐阅读