2011-08-04 5 views
0

내 쿼리 사용자 ID 내부 휴가 테이블에없는 경우에는이 모든 선택JOIN 및 WHERE 문을 사용하여 레코드를 필터링하는 방법은 무엇입니까?

SELECT table1.name, table2.wage, table2.bonus table3.shift, table4.vacation 
    FROM table1 
INNER JOIN table2 ON table1.userid = table2.userid 
INNER JOIN table3 ON table2.userid = table3.userid 
INNER JOIN table4 ON table4.userid = table4.userid 
LEFT JOIN table5 ON table1.name = table5.position 
**LEFT JOIN vacation on vacation.userid = table1.userid 
WHERE vacation.userid IS NULL**; 

.

이제 사용자 ID가 휴가 테이블에 있는지 확인하고이 userid에 대한 vacation.status = 1이 여전히 쿼리에 표시되어야하는지 확인해야합니다. 이 별도의 쿼리/요구 사항 인 경우

답변

1

, 다음 쿼리는 작동합니다

SELECT table1.name, table2.wage, table2.bonus table3.shift, table4.vacation 
    FROM table1 
INNER JOIN table2 ON table1.userid = table2.userid 
INNER JOIN table3 ON table2.userid = table3.userid 
INNER JOIN table4 ON table4.userid = table4.userid 
INNER JOIN vacation on vacation.userid = table1.userid 
LEFT JOIN table5 ON table1.name = table5.position 
WHERE vacation.status = 1; 

둘 다 요구 사항을 (사용자 ID가 NULL 또는 상태 = 1),이 시도해야하는 경우 :

SELECT table1.name, table2.wage, table2.bonus table3.shift, table4.vacation 
    FROM table1 
INNER JOIN table2 ON table1.userid = table2.userid 
INNER JOIN table3 ON table2.userid = table3.userid 
INNER JOIN table4 ON table4.userid = table4.userid 
LEFT JOIN table5 ON table1.name = table5.position 
LEFT JOIN vacation on vacation.userid = table1.userid 
WHERE vacation.user_id IS NULL or vacation.status = 1; 
+0

그것은 동일한 쿼리가 필요합니다, 나는 그것을 시도했지만 그것은 나를 위해 먼저 작동하지 않았다, 지금 당신의 예제와 함께, 감사합니다 형제와 함께 작동합니다. – BUddhaxx

관련 문제