我有三个相关的表users
,groups
和group_members
。 users表包含users
信息,groups
表包含组名和组所有者ID(即users_id
)。表group_members
包含每个组的成员(user_id
和group_id
)。我试图加载每个组的用户详细信息,但结果不正确。我的表是,
用户
id firstname lastname email
1 anu mm anu@gmail.com
2 manu mohan manu@gmail.com
3 cinu ab cinu@gmail.com
4 vinu mj vinu@gmail.com
5 vijesh cc vijesh@gmail.com
6 admin admin admin@gmail.com
基
id user_id name
1 1 group1
2 2 group2
3 2 group3
4 3 group4
group_members
id user_id group_id
1 1 1
2 2 2
3 2 3
4 3 4
5 2 3
7 1 2
8 1 3
9 3 1
但是当我尝试下面的查询时,
select users.firstname,users.lastname,users.email,groups.name as groupname from users inner join groups on groups.user_id = users.id inner join group_members on group_members.group_id = groups.id where groups.id=3 AND users.firstname LIKE 'cin%' OR users.lastname LIKE 'cin%' OR users.email LIKE 'cin%'
获得结果(这不是预期的)
firstname lastname email groupname
cinu ab cinu@gmail.com group4
在这种情况下,我使用where条件WHERE groups.id =3
,但结果采用group4
(groups.id为4)。请给我一个解决方案。
答案 0 :(得分:2)
你必须在你的或陈述周围使用()
:
where groups.id=3 AND (users.firstname LIKE 'cin%' OR users.lastname LIKE 'cin%' OR users.email LIKE 'cin%')
由于AND
具有更高的优先级,因此您的查询类似于:
where (groups.id=3 AND users.firstname LIKE 'cin%') OR users.lastname LIKE 'cin%' OR users.email LIKE 'cin%'
这不是你想要的。