使用WHERE NOT EXISTS
と外側がすべての普遍的なプログラムについて
をジョイン:
SELECT * FROM Programme
WHERE NOT EXISTS (SELECT * FROM
(Participation NATURAL JOIN Programme) LEFT JOIN Employee
USING (Eid,Department)
WHERE Employee.Eid IS NULL)
これがあるべき説明が簡単 - 従業員が参加していないすべてのプログラムを選択
すべてenthusiatic従業員のための
:再び
SELECT * FROM Employee
WHERE NOT EXISTS (SELECT * FROM
Employee LEFT JOIN Participation
USING (Eid,department)
WHERE Participation.Eid IS NULL)
は - その従業員が参加していないされているのと同じ部署にはプログラムが存在しないすべてのemployyesを選択します。あなたがすべてで正式なロジックに精通している場合
これは見覚えがあるかもしれ - ユニバーサル定量化は、一般的に定義されて否定実存資格の面で
[この記事を参照](http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational -division /) –
このようなクエリの最適化に関する最近の質問(PostgresとMySQL)。これを行うにはさまざまな方法があります:http://stackoverflow.com/questions/7364969/how-to-filter-sql-results-in-a-has-many-through-relation/ –