2011-08-19 4 views
-2

데이터베이스 테이블에 Users (SQL Server 2008 R2)이라는 사용자 목록이 있습니다. 사용자의 UserName 외에도 사용자를 분류하는 두 개의 필드가 있습니다. 즉, 간단하게하기 위해 DepartmentJobTitle이라고 말합니다.테이블 B의 두 열과 일치하는 테이블 A의 레코드 일부를 선택하십시오.

| UserName | Department | JobTitle | 
------------------------------------------ 
| Joe  |  IT  | SysAdmin | 
| Jim  |  IT  | DBA  | 
| Jeff | Sales  | SalesMgr | 
| Mack | Sales  | Rep  | 

나는 또한 내가 실제로 신경 DepartmentJobTitle의 특정 조합을 나열하는 테이블, ActiveJobs을 보유하고 있습니다.

| Department | JobTitle | 
----------------------------- 
|  IT  | SysAdmin | 
| Sales  | SalesMgr | 
| Sales  | Rep  | 

나는 ActiveJobsDepartment/JobTitle조합 일치 Users에서 각 레코드를 선택합니다. 나는이 쿼리는 그것을 할 것이라고 생각 :

SELECT Users.* 
FROM Users 
INNER JOIN ActiveJobs DEP 
ON Users.Department = DEP.Department 
INNER JOIN ActiveJobs JOB 
ON Users.JobTitle = JOB.JobTitle 

을하지만 한 번 나는 Department 열에서 중복으로 인해 발생 생각 많은 경우 (보다 같은 User 기록을 더 리턴 -하지만 난 정말 이해가되지 않는 이유). 위의 예제에서 (Joe, Jim, Jim, Mack) 나는 (Joe, Jim, Mack)을 얻고 자 함에도 불구하고 얻고 있습니다.

어떤 쿼리 일부 일치를 가지고User의 기록 조합을 얻을 것 DepartmentActive Jobs에서 JobTitle?

답변

4

두 번 참여하는 대신 조인 절에 "AND"를 넣습니다.

SELECT Users.* 
FROM Users 
INNER JOIN ActiveJobs DEP 
ON Users.Department = DEP.Department AND Users.JobTitle = DEP.JobTitle 
1

하나의 속성에 대해 각각 두 개의 조인이 아닌 두 개의 속성에 대한 조인이 작동하는 것처럼 보입니다. 너 조이 어 ... 그리고 ...? (컴퓨터에서 멀리 떨어져)

관련 문제