0

我想在一个过程中使用 Date_add 2 次,但它返回 0 行(而它应该返回行)

这是程序

 select av.*, ap.*,c.* from tbl_available av 
 left join tbl_appointment ap on av.avHours = ap.appointmenttime 
 and ap.calendarid = kalenderId 
 and ap.appointmentdate = DATE_ADD(dag, INTERVAL 6 DAY)
 left join tbl_client c on ap.clientid = c.clientid
 where av.avCalendarId = KalenderId 
 and av.avDays = DayOfweek(DATE_ADD(dag, INTERVAL 6 DAY)) 
 order by avHours;

它可以在没有 date_add 的情况下工作

提前致谢!

//编辑

我现在拥有的:

select av.*, ap.*,c.*, ab.absentid from tbl_available av 
left join tbl_appointment ap on av.avHours = ap.appointmenttime 
and ap.calendarid = kalenderId 
and ap.appointmentdate BETWEEN dag AND DATE_ADD(dag, INTERVAL 6 DAY)
and (av.avDays = DayOfweek(ap.appointmentdate) OR ap.appointmentdate IS NULL)
left join tbl_client c on ap.clientid = c.clientid
left join tbl_absent ab on av.avHours = ab.ababsent
and ab.abHoliday = dag
and ab.abCalendarID = kalenderId
where av.avCalendarId = kalenderId 
order by avDays,avHours;

但是没有获取 ab.absentid,这是为什么呢?:(

4

1 回答 1

1

我不确定您到底想要什么,但在整个星期内,请尝试以下操作:

select av.*, ap.*,c.* from tbl_available av 
left join tbl_appointment ap on av.avHours = ap.appointmenttime 
and ap.calendarid = kalenderId 
and ap.appointmentdate BETWEEN dag AND DATE_ADD(dag, INTERVAL 6 DAY)
and (av.avDays = DayOfweek(ap.appointmentdate) OR ap.appointmentdate IS NULL)
left join tbl_client c on ap.clientid = c.clientid
where av.avCalendarId = KalenderId 
order by avHours;

BETWEEN用来指定ap.appointmentdate. 更改为与没有约会的行av.avDays相关ap.appointmentdate或也显示没有约会的行(假设这种行为是因为你有一个LEFT JOINon tbl_appointment)。我已经离开了,DayOfweek(dag) ...因为您正在查看整整一周,所以这是多余的。

于 2012-10-01T02:54:22.803 回答