Task テーブルと Travel テーブルの 2 つの sqlserver 2005 テーブルがあります。
特定の Empid の Task テーブルからすべてのレコードを選択するクエリを作成しようとしています。Task が旅行の場合は、別のテーブルからマイレージ値も取得します。
1 つの行だけが選択されるはずですが、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)