例えば
デパートメント
id departmentname
1 x
2 y
3 z
従業員
fkdepartmentid empname
1 john
1 sam
2 ram
3 hari
ここでは、任意の数のsempname
に属することができます。department
私の要件は、 (結合を使用して)department
テーブル whereからすべての部門を取得することです。empname!=john
次のクエリで試しました:
SELECT d.id FROM department d
INNER JOIN employee e ON d.id=e.fkdepartmentid
WHERE((e.empname<>'1')OR d.id IN (SELECT DISTINCT fkdepartmentid FROM employee WHERE fkdepartmentid NOT IN (SELECT DISTINCT fkdepartmentid FROM employee WHERE empname=sam)) ) GROUP BY d.id
ただし、クエリは遅く、一部のシナリオでは失敗します。結果は 2 と 3 になるはずです。これらの結果を得るにはどうすればよいですか?