ВЫБЕРИТЕ подмножество записей из таблицы A, которые соответствуют двум столбцам в таблице B - PullRequest
0 голосов
/ 19 августа 2011

У меня есть список пользователей в таблице базы данных с именем 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?

Ответы [ 2 ]

4 голосов
/ 19 августа 2011

Поставьте «И» в предложении соединения вместо того, чтобы присоединяться дважды.

SELECT Users.*
FROM Users
INNER JOIN ActiveJobs DEP
ON Users.Department = DEP.Department AND Users.JobTitle = DEP.JobTitle
1 голос
/ 19 августа 2011

Похоже, будет работать одно объединение с двумя атрибутами, а не два объединения с одним атрибутом каждоеМожете ли вы присоединиться к ... И ...?(Вдали от компьютера)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...