簡體   English   中英

CodeIgniter兩個表左連接在右表中未命中時不返回左表的連接條件id

[英]CodeIgniter Two tables Left Join does not return Join Condition id of left table when miss in right table

我有兩個表,如Table1和Table2,我左邊加入表2的Table1,Table1.PrimaryKey = Table2.ForeignKey。 它確實從兩個表返回所有行但在某些行中,由於Table2中沒有連接條件的記錄,因此Table1缺少PrimaryKey字段值。 這是我的代碼

$this->db->select('*');
$this->db->from('CI_Articles_Tbl');
$this->db->join('CI_Article_Images_Tbl',
    'CI_Articles_Tbl.roflArticle_ID=CI_Article_Images_Tbl.roflArticle_ID','left');
$this->db->group_by('CI_Articles_Tbl.roflArticle_ID');
$query = $this->db->get();
return $query->result_array();

我的查詢中有什么問題以及它可能的解決方案是什么。 任何幫助將受到高度贊賞。

你有選擇table.*

試試這個代碼。

$this->db->select('CI_Articles_Tbl.*');

我對自己的問題的回答是這個,但讓我首先感謝“打火機”! 他的代碼幫助我糾正了我的疑問,

假設您有兩個表Table1和Table2,並且您希望在表2或其他意義上LEFT JOIN Table1,您希望兩個表中的所有行是否匹配或不匹配表Table1和Table2。 例如,你想要這樣

       Table1.P1 = Table2.P1

我正在做什么,我繼續選擇Table1中的所有字段,然后直接在Table2上給出了連接條件,這是錯誤的,因為有時Table1.P1將沒有匹配Table2.P1,在這種情況下,行將會出現但是值Table1.P1將丟失。

您需要做的是具體顯示您想要從哪些表中選擇哪些字段除了您在Join條件中使用的Table2字段。 像這樣的Table1。* Table2。*除了Table2.P1(注意:非常重要)

我的代碼出於任何參考目的

$this->db->select('CI_Articles_Tbl.*,CI_Article_Images_Tbl.roflArticleImage_ID,CI_Article_Images_Tbl.roflArticleImage_Ext,CI_Users_Tbl.*');
        $this->db->from('CI_Articles_Tbl','CI_Article_Images_Tbl','CI_Users_Tbl');
        $this->db->join('CI_Article_Images_Tbl','CI_Articles_Tbl.roflArticle_ID=CI_Article_Images_Tbl.roflArticle_ID','left outer');
        $this->db->join('CI_Users_Tbl','CI_Articles_Tbl.roflUser_ID=CI_Users_Tbl.roflUser_ID');
        $this->db->group_by('CI_Articles_Tbl.roflArticle_ID');
        $query = $this->db->get();
        return $query->result_array();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM