2016-03-04 54 views
0

連接查詢我試圖做一個查詢與codeigniters查詢生成器應用上使用CodeIgniter查詢生成器

$this->db->select('*') 
      ->from('users') 
      ->join('user_to_group', 'users.id=user_to_group.user_id') 
      ->where('user_to_group.group_id !=', $group->id); 

在這裏,在上面的代碼我試圖獲取其不在所提供的用戶羣不同的記錄。此查詢在舞臺上正常工作,但有時會多次返回相同的記錄,因爲用戶可能是多個組的一部分。所以爲了解決這個問題,我想在此查詢中應用distinct

但我沒有找到正確的方法來做到這一點。

請幫助..

+0

我想你想使用「group by user_to_group.group_id」,如果你需要每個組的唯一記錄並按照group_id刪除重複的行 – jilesh

+0

只需添加' - > distinct()'作爲查詢的第一行 – DinosaurHunter

+1

add ' - > group_by(「users.id」);' –

回答

0

您需要在查詢添加group_by

如下編寫查詢: -

$this->db->select('*') 
      ->from('users') 
      ->join('user_to_group', 'users.id=user_to_group.user_id') 
      ->where('user_to_group.group_id !=', $group->id) 
      ->group_by('users.id'); // add this line 
+0

語法錯誤' - >其中('user_to_group.group_id!=',$ group-> id)':) –

+0

@PraveenKumar:是的人!錯過了分號。我編輯了答案。謝謝:-) –

+0

隨時歡迎布羅:) –

0

注:此查詢將僅情況下工作,如果你使用「user_to_group」表作爲倍數關係表意味着用戶和組你在這第三次用過的兩個表ID表名「user_to_group」。

使用的,如果您需要在GROUP_ID 基地唯一的記錄組試試這個:

$this->db->select('*') 
      ->from('users') 
      ->join('user_to_group', 'users.id=user_to_group.user_id') 
      ->where('user_to_group.group_id !=', $group->id) 
     ->group_by("user_to_group.group_id"); 

因爲你會得到多個記錄時,用戶是多個組的一部分,所以你會用它來獲取組唯一的記錄用戶vise,或者您將在group_by中同時應用group_id和user_id以從兩個字段中獲得唯一。

+0

請參閱@ PravinKumar的評論在其他答案。 –

相關問題