2
我有一個現有的Web應用程序,我從表'用戶'返回用戶詳細信息,並從表'programme_results'的用戶測試結果。完全外部加入CodeIgniter與活動記錄
(用戶)
|email|client_id|
|[email protected]|1|
|[email protected]|2|
|[email protected]|1|
(programme_results)
|email|client_id|prog_id|
|[email protected]|1|3|
|[email protected]|1|3|
|[email protected]|1|3|
兩個表都有一個 '電子郵件' 列和兩個表中一 '的client_id' 列,然後在一個 'prog_id' 列結果表。無論電子郵件列中是否存在匹配項,我都需要返回來自'兩個'表的所有行,但是如果'匹配'則匹配值。
我認爲這將是通常所說的「完全外連接」,但我沒有在CodeIgniter Active Record支持的文檔中看到任何提及。 :(
目前,我有我的活動記錄查詢大致爲如下:
$this->db->select('u.email AS user_email, u.client_id AS user_client_id, r.email AS result_email, r.client_id AS result_client_id');
$this->db->from('programmes_results r');
$this->db->join('users u', 'u.email=r.email', 'left outer');
$this->db->where('r.client_id', 1);
$this->db->where('r.prog_id', 3);
$query = $this->db->get();
產生:
SELECT u.email AS user_email, u.client_id AS user_client_id, r.email AS result_email, r.client_id AS result_client_id FROM programmes_results r LEFT OUTER JOIN users u ON u.email=r.email WHERE r.client_id=1 AND r.prog_id=3
但是這給了我一個結果集如下,其中它的匹配用戶無需採取任何'他們的'client_id值的通知:
|user_email|user_client_id|result_email|result_client_id|
|[email protected]|130|[email protected]|1|
|NULL|NULL|[email protected]|1|
|[email protected]|2|NULL|NULL|
此外,更重要的是它不是t在'programmes_results'中沒有匹配的電子郵件地址的情況下返回'users'的值。我想要結束的是:
|user_email|user_client_id|result_email|result_client_id|
|[email protected]|130|[email protected]|1|
|NULL|NULL|[email protected]|1|
|[email protected]|1|NULL|NULL|
:?
你得到這個工作?如果不是,我可能會爲你刺傷它。 – seangates