2016-12-13 44 views
0

我最近一直在努力加強我的查詢技能,並做到這一點,我決定做一個簡單的twitter克隆。我有兩張我正在嘗試加入的桌子。無法理解我在做什麼錯我的SQL加入

用戶表
USER_ID Pimary關鍵
用戶名
電子郵件
等...

後續表(以下對於用戶)
ID Pimary重點
FK_Follower(外鍵。 User_ID)UNIQUE
FK_Followie(User_ID的外鍵)UNIQUE

這裏我的邏輯是,每行都必須有一個唯一的對,例如(16,18 | 18,16 | 14,13),並且每當用戶請求關注時,如果該行已經存在,我將其刪除。這允許布爾類似的功能。

我創建了一個用戶的追隨者視圖(你去給用戶頁面,點擊查看追隨者,它顯示誰是繼他們)

當然,要做到這一點,我知道我需要使用一個連接用戶表和跟蹤表之間。我使用笨查詢建築,但結構很容易對任何與SQL知識,告訴是怎麼回事,所以它看起來像這樣

$this->db->select('*'); 
    $this->db->from('follow'); 
    $this->db->where('follow.FK_Followie_ID', $id);// look for all rows where someone follows the user $id value passed to this function 
    $this->db->join('users', 'users.User_ID = follow.FK_Follower_ID' ,'right'); 
    $query = $this->db->get(); 
    return $query->result_array(); 

在我看來,那我在我需要的行數據並顯示來電他們,(完成此全球飼料,特定的配置文件飼料,和個別飼料所以我知道這是什麼在我看來是邏輯)

使用正確的連接是我可以顯示結果,但它們是錯誤的唯一途徑。我很積極,我正在發送與正在使用的配置文件頁面相關的正確的$ id值的查詢,但我已經嘗試了所有在太陽下的連接組合,並且只有它顯示結果時,它們肯定是不正確的。

我能完成我想要做的事嗎?這可能是我的表結構的問題嗎?或者它只是我的查詢邏輯?我有一種感覺,我的加入知識存在差距,如果有人會如此善意地啓發我,我需要擺脫困境。謝謝。

回答

0

嘗試此

$this->db->select('*'); 
 
    $this->db->from('follow'); 
 
    $this->db->join('users', 'users.User_ID = follow.FK_Follower_ID' ,'right'); 
 
    $this->db->where('follow.FK_Followie_ID', $id); 
 
    $query = $this->db->get(); 
 
    return $query->result_array();

+0

雖然此代碼段可以解決的問題,[包括一個解釋](http://meta.stackexchange.com/questions/114762/explaining - 完全基於代碼的答案)確實有助於提高發布的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – DimaSan

+0

@kundanPicker我曾多次試過這個查詢,結果沒有。它最終顯示了db中每個人都被某個人打了底子的人。 –