2012-05-09 3 views
1

나는 다음과 같은 쿼리를 가지고 : 나는 마지막 항 및 제 (AND S.alert_level> = 90)를 벗을 경우 예상대로는 MySQL의 권리에 가입

SELECT * FROM my_users as U 
RIGHT JOIN subscribers AS S ON S.userid = U.user_id 
WHERE S.approved > 0 AND S.channel_id = 1 AND S.alert_level >= 90 

검색이 정확히 작동합니다. 마지막 AND 절에서 나가고 빈 결과 집합을 얻습니다.

명백하게, 나는 rightid_level을 가진 사용자 ID가 반환되었는지 확인하기 위해 구독자 테이블을 검사했으며 모두 90 명 이었으므로 2 명의 사용자를 반환해야합니다 ... 그리고 S.alert_level은 smallint (6)입니다.

내가 여기에 뭔가 분명한 것을 놓치고 있습니까?

감사합니다.

+2

이상하게 들립니다. "구독자 테이블을 검사하여 반환 할 사용자 ID가 올바른 alert_level을 가지고 있는지 확인하십시오"라고 말하면서 왜 그렇게해야합니까? 마지막 AND 절 (AND S.alert_level> 90)을 제거하려고 할 때부터 alert_level을 이미 볼 수 있어야합니다. 그러면 검색이 예상대로 정확하게 작동합니다. " 그걸 확인하지 않았 니? 지금 확인해 주시겠습니까? –

+0

강타! 네 ... 눈의 또 다른 쌍이 필요했습니다! – ppetree

+0

편집 및/또는 수락을 원하는 경우에 대비하여 답변으로 재 게시했습니다. –

답변

1

확인이 쿼리의 결과, 그 결과 집합의 각 행에 대해 반환되는 S.alert_level의 값

SELECT * FROM my_users as U 
RIGHT JOIN subscribers AS S ON S.userid = U.user_id 
WHERE S.approved > 0 AND S.channel_id = 1 

주의하십시오. 아마 90을 넘지 않을 것입니다. 그래서 마지막 조건을 추가하면 왜 행이 생기지 않는지 설명합니다.