두 개의 sqlserver 2005 테이블이 있습니다 : 작업 테이블과 여행 테이블.왼쪽 결합을 사용하는이 t-sql 쿼리에 어떤 문제가 있습니까?
특정 Empid에 대한 작업 테이블의 모든 레코드를 선택하는 쿼리를 작성하려고하며 작업이 여행중인 경우 다른 테이블에서 마일리지 값도 가져옵니다.
하나의 행만 선택하면되지만 Task 테이블의 모든 행이 반환됩니다.
내가 사용하고 쿼리가
Select Tasklog.TaskLogPkey, Tasklog.Empid , Tasklog.Task, TravelLog.Mileage from
Tasklog
left join TravelLog
on
TaskLog.EmpId = 12 and TaskLog.Task ='Travel' and
TaskLog.TaskLogPkey = TravelLog.TaskLogPkey
이다하지만 내가 잘못 뭐하는 거지
-- TaskLog.EmpId = 12 and TaskLog.Task ='Travel' and
을 포함하지 않는 경우는 차이가 없습니다?
분명히 다음은 작동하지 않습니다
Select Tasklog.TaskLogPkey, Tasklog.Empid , Tasklog.Task, TravelLog.Mileage from
Tasklog where TaskLog.EmpId = 12 and TaskLog.Task ='Travel'
left join TravelLog
on
TaskLog.TaskLogPkey = TravelLog.TaskLogPkey
이는 내가 사용하고있는 테이블입니다 : 당신이 외부 조인을 수행 할 때
Create table TaskLog(
TaskLogPkey int not null,
Empid int,
Task varchar(30)
)
Insert Tasklog values(1,12,'Sales')
Insert Tasklog values(2,4,'Travel')
Insert Tasklog values(3,63,'Meeting')
Insert Tasklog values(4,12,'Travel')
Insert Tasklog values(5,12,'Email')
Insert Tasklog values(6,4,'Travel')
Insert Tasklog values(7,63,'Meeting')
Insert Tasklog values(8,12,'PhoneCall')
Create table TravelLog(
TaskLogPkey int not null,
Mileage int
)
Insert TravelLog values(2,45)
Insert TravelLog values(4,25)
Insert TravelLog values(6,18)
당신이 외부 조인 왼쪽 봤어보기? – james31rock
@ james31rock 'LEFT JOIN'과 'LEFT OUTER JOIN'은 같은 것입니다. 조인에 'OUTER'항목을 지정할 필요가 없습니다. – Taryn