2013-12-16 5 views
1

Я извлекаю пользователей из базы данных для отображения в выпадающем списке. Мне нужны все пользователи, которые соответствуют правильному идентификатору группы, и которые также входят в одну из двух определенных ролей. Вот заявление, я до сих пор:Запрос, возвращающий пользователей, которые не соответствуют критериям инструкции WHERE

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' 

Это тянет пользователей, которые даже не в группе, хотя и я выводимый $ идентификатор_группы и показывает правильный номер. Я делаю что-то не так с секцией WHERE этого запроса? Я также получаю повторение одного пользователя, когда они появляются только один раз в списке пользователей, который соответствует этим критериям. Если я пропущу что-то простое, дайте мне знать.

Благодаря

ответ

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') 

Надеется, что это помогает ..

+0

Это сработало отлично! Я знал, что это касается этой области заявления. Спасибо за помощь. – andy

+0

@ Andy.Welcome :), Не могли бы вы пометить его как ответ, чтобы он был полезен другим. –

+0

Будет делать, когда это позволит мне, просто нужно подождать 5 минут;) Еще раз спасибо. – andy

1

Вы должны использовать IN Clause вместо этого на ИЛИ.

Попробуйте это:

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'); 
+0

@andy Как на меня, вы должны использовать в пункте вместо OR если вы относитесь к производительности. –