Mysql where子句

时间:2016-02-18 17:10:40

标签: mysql

enter image description here

select * from staff
LEFT JOIN servicereservation
on servicereservation.snic = staff.snic
where servicereservation.starttime!='04:30:00 '
AND servicereservation.endtime!='05:00:00'
OR servicereservation.snic IS NULL ;

我需要找到一天中特定时间可用的工作人员姓名。时间在服务保存表中一天在预订表中。我不知道如何映射这3张桌子。我试过这个。但没有与预订联系。请让我这样做。

2 个答案:

答案 0 :(得分:0)

您必须使用密钥执行连接,并对相应表中的日期执行过滤。试试这个:

SELECT A.* FROM
STAFF A LEFT JOIN SERVICERESERVATION B ON (A.SNIC = B.SNIC) 
LEFT JOIN RESERVATION C ON (B.RID = C.RID) 
WHERE DATE_FORMAT(C.RESERVATEIONDATE, '%d/%m/%Y')=
[Your reservation date in dd/MM/YYYY string format] 
AND DATE_FORMAT(B.STARTTIME,'%H:%i:%s')=
[your reservation start time in HH:mm:ss format] 
AND DATE_FORMAT(B.ENDTIME,'%H:%i:%s')=
[your reservation end time in HH:mm:ss format];

有关格式化sql日期的更多信息,请参阅; image。 您应该注意,在这种情况下,这里的时间小时是24小时时间格式。所以下午1点有一个小时13。

答案 1 :(得分:0)

正常的解决方案是检查在JOIN的ON条件中从LEFT OUTER JOINed表中排除行。您可以在WHERE子句中检查NULL: -

SELECT * 
FROM staff
LEFT JOIN servicereservation
ON servicereservation.snic = staff.snic
AND servicereservation.starttime != '04:30:00'
AND servicereservation.endtime != '05:00:00'
WHERE servicereservation.snic IS NULL ;

虽然我怀疑你实际上只想在开始和结束时间之间使用一次检查。

相关问题