2011-08-04 15 views
0

マイクエリ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が休暇テーブル内でない場合にこれがすべて選択されます。

ここでは、ユーザーIDが休暇表内にあるかどうかをチェックし、useridvacation.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

関連する問題