基本的に私がやりたいことは、従業員が働いていない店舗のリストを取得することです。問題は、クエリが他の従業員が働いていた店舗のリストを返すことです。たとえば、employee.ID = 1&2 の両方が store.ID = 2 で働いている場合、結果セットには store.ID = 2 が含まれますが、これは Employee.ID = 1 がそこで働いているため、望ましくありません。
SELECT
stores.name
FROM
stores
LEFT JOIN
employeeStoreRelationshipTable
ON
employeeStoreRelationshipTable.employeeID = employee.id
WHERE
employeeStoreRelationshipTable.employeeID IS NULL
OR
employeeStoreRelationshipTable.employeeID <> [actual Employee ID]
これは、employee.ID = 1 以外の別の従業員がそこで働いているため、store.ID = 2 にフィルターがないため、結合に含まれているためです...
更新:要求に応じて情報を追加しました:
Employee table
id, name
1, Bob
2, John
Store table
ID, name
1, 111 main st.
2, 222 main st.
3, 333 main st.
4, 444 main st.
EmployeeStoreRelationshipTable
employeeID, storeID
1, 1
1, 3
2, 3
3, 4
したがって、この場合、結果は次のようになります。
従業員 1 は店舗 2 と 4 で働いていません。
クエリ結果は 2、3、および 4 です。店舗 3 は、Employee.ID = 2 が店舗 3 で働いているため表示されます。