我有这个问题:
SELECT
TA.id,
T.duration,
DATE_FORMAT(TA.startTime,'%H:%i') AS startTime,
TEI.displayname,
TA.threatment_id,
TE.employeeid,
TTS.appointment_date
FROM
tblEmployee AS TE
INNER Join tblEmployeeInfo AS TEI ON TEI.employeeinfoid = TE.employeeinfoid
LEFT OUTER Join tblAppointment AS TA ON TE.employeeid = TA.employee_id
LEFT OUTER Join tblThreatment AS T ON TA.threatment_id = T.threatmentid
LEFT OUTER Join tblAppointments AS TTS ON TTS.id = TA.appointments_id
AND TTS.appointment_date = '2009-10-19'
LEFT OUTER Join tblCustomerCard AS TCC ON TCC.customercardid = TTS.customercard_id
WHERE
TE.employeeid = 1
我尝试完成的是选择一名员工(如果有的话)在指定日期的所有约会。如果没有任何约会,它至少应该提供有关该员工的信息。
但是现在,它只提供与员工相关的所有约会,并在日期不匹配时传递null。这里出了什么问题?
答案 0 :(得分:2)
因为您正在进行左OUTER连接,所以它只会加入那些与On条件匹配的记录,并在不满足条件时附加Null。
您仍将获得该日期没有约会的记录。
如果您进行了INNER连接,那么如果不满足On条件,则不会输出任何记录。所以你不会得到那个日期没有约会的记录。
答案 1 :(得分:0)
好的,不确定您所在的数据库,但这可以在SQL服务器上运行:
select * from tblEmployee TA
...
left join
( select * from tblAppointments ed where ed.appointment_date = '10/01/2008' ) TTS
on ON TTS.id = TA.appointments_id
无论如何,这个氛围!你可能需要修补一下......我在工作,不能得到你的整个事情! :)