我正在从数据库中检索用户以显示在下拉列表中。我需要所有匹配正确组ID的用户,这些用户也是两个特定角色之一。以下是我到目前为止的陈述:
SELECT a.USER_ID AS userid, a.GROUP_ID, a.ROLE,
b.ID, b.NAME, b.LAST_NAME FROM b_sonet_user2group a
INNER JOIN b_user b ON a.USER_ID = b.ID
WHERE a.GROUP_ID = $groupid
AND a.ROLE = 'A' OR a.ROLE = 'E'
这会吸引甚至不在群组中的用户,并且我输出$ groupid并显示正确的数字。我在这个查询的WHERE部分做错了吗?当一个用户只在符合该条件的用户列表中出现一次时,我也会重复一个用户。如果我遗漏了一些简单的东西,请告诉我。
谢谢
答案 0 :(得分:1)
您必须使用IN Clause代替 OR 。
试试这个:
SELECT a.USER_ID AS userid, a.GROUP_ID, a.ROLE, b.ID, b.NAME, b.LAST_NAME
FROM b_sonet_user2group a
INNER JOIN b_user b ON a.USER_ID = b.ID
WHERE a.GROUP_ID = $groupid AND a.ROLE IN ('A', 'E');
答案 1 :(得分:1)
你可以试试这个:
SELECT a.USER_ID AS userid, a.GROUP_ID, a.ROLE,
b.ID, b.NAME, b.LAST_NAME FROM b_sonet_user2group a
INNER JOIN b_user b ON a.USER_ID = b.ID
WHERE a.GROUP_ID = $groupid
AND (a.ROLE = 'A' OR a.ROLE = 'E')
希望有所帮助......