我正在尝试使用codeigniters Query Builder进行查询
$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 :(得分: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
答案 1 :(得分:0)
注意:如果您使用“user_to_group”表作为多个关系表,则此查询仅适用于使用此第三个表名称“user_to_group”中的两个表ID的用户和组。
如果您需要基于group_id的唯一记录,请使用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("user_to_group.group_id");
因为当用户是多个组的一部分时您将获得多条记录,因此您将使用此记录来获取组用户vise的唯一记录,或者您将在group_by中应用group_id和user_id以使其在两个字段中都是唯一的。