У меня есть список пользователей в таблице базы данных с именем Users
(SQL Server 2008 R2).В дополнение к пользователю UserName
есть два поля, которые классифицируют пользователя - для простоты мы скажем Department
и JobTitle
.
| UserName | Department | JobTitle |
------------------------------------------
| Joe | IT | SysAdmin |
| Jim | IT | DBA |
| Jeff | Sales | SalesMgr |
| Mack | Sales | Rep |
У меня также есть таблица, ActiveJobs
, в котором перечислены определенные комбинации Department
и JobTitle
, которые меня действительно волнуют.
| Department | JobTitle |
-----------------------------
| IT | SysAdmin |
| Sales | SalesMgr |
| Sales | Rep |
Я хочу выбрать каждую из записей из Users
, которая соответствует комбинации Department
/ JobTitle
в ActiveJobs
.Я думал, что этот запрос сделает это:
SELECT Users.*
FROM Users
INNER JOIN ActiveJobs DEP
ON Users.Department = DEP.Department
INNER JOIN ActiveJobs JOB
ON Users.JobTitle = JOB.JobTitle
Но это возвращает одну и ту же запись User
более одного раза во многих случаях (что, я думаю, вызвано дубликатами в столбце Department
- ноне очень понимаю почему).Для приведенного выше примера я получаю (Джо, Джо, Джим, Мак), хотя я надеялся просто получить (Джо, Джим, Мак).
Какой запрос получит подмножество из User
записей с соответствующей комбинацией из Department
и JobTitle
в Active Jobs
?