[英]SQL - How to join two tables using values from the other table for missing or null values in either table
[英]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,因此您從admin
和user
表中獲取了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.