簡體   English   中英

如何使用Codeigniter聯接3個表,而表中沒有任何空值?

[英]How to join 3 tables using codeigniter without any null values in table?

我的查詢是

$this->db->select('*');
    $this->db->from('private_messages');         
    $this->db->join('admin', 'admin.admin_id = private_messages.from_id', 'left');                
    $this->db->join('user', 'user.user_id = private_messages.from_id', 'left');
    $this->db->where('private_messages.hash_id',$id);
    $this->db->order_by('private_messages.time_sent','asc');
    $query=$this->db->get();        
    return $query->result_array();

輸出為:

form_id | Username | Username
21      |Praveen   |NULL
21      |Praveen   |NULL
3       |NULL      |admin
3       |NULL      |admin

因此,請幫助刪除所有null並將用戶名放在單列中。

由於您使用的是LEFT JOIN,因此您從adminuser表中獲取了null。

如果在LEFT JOIN的ON或USING部分中沒有右表的匹配行,則將所有列都設置為NULL的行用於右表。 您可以使用此事實在一個表中查找在另一個表中沒有對應項的行。

因此,例如以下行:

$this->db->join('admin', 'admin.admin_id = private_messages.from_id', 'left'); 

應該是這樣的:

$this->db->join('admin', 'admin.admin_id = private_messages.from_id'); 

在此處閱讀有關CodeIgniter的活動記錄的更多信息並加入: https : //ellislab.com/codeigniter/user-guide/database/active_record.html

有關MySQL的更多信息,請點擊此處: http : //dev.mysql.com/doc/refman/5.7/en/join.html


更新

“我想在單列中輸入用戶名,並顯示與message_id匹配的用戶名。可以嗎?”

是的,就是這樣:

$this->db->select('*');
$this->db->from('private_messages');         
$this->db->join('user', 'user.user_id = private_messages.from_id');
$this->db->where('private_messages.hash_id',$id);
$this->db->order_by('private_messages.time_sent','asc');
$query=$this->db->get();        
return $query->result_array();

暫無
暫無

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

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