2012-10-01 335 views
1

我想做一个左连接,但mysql只是做一个内部连接? 我的查询有什么不对?mysql左连接,MySQL做内连接?

select av.*, ap.* 
from tbl_available av 
left join tbl_appointment ap 
on av.avHours = ap.appointmenttime 
where av.avCalendarId = 2 
and (ap.calendarid = 2 or ap.calendarid= null) 
and (ap.appointmentdate = "2012-10-01" or ap.appointmentdate = null) 
and av.avDays = DayOfweek("2012-10-01") 
order by avHours 

MySQL只给那些谁拥有相应提前预约

感谢avHours!

+0

不能使用'='来检查字段是否为空,则必须使用'IS NULL'。 – Matthew

回答

4

由于这些条件的:

and ap.calendarid = 2 
and ap.appointmentdate = "2012-10-01" 

tbl_appointment只能选择行不属于null

如果这就是你想要的东西 - 它们移动到左连接的ON部分

+0

谢谢你,这个伎俩! :) 愚蠢从我忘记这 – Nick

+0

或者你可以改变你的地方“和(ap.calendarid为null或ap.calendarid = 2)和(ap.appointmentdate为null或ap.appointmentdate ='2012年10月1日“)” –