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)