2016-03-04 47 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的评论在其他答案。 –

相关问题