mysql date_add 2 раза в процедуре
Я хочу использовать 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 не извлекается, почему это?:(
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 JOIN
на tbl_appointment
). Я перестал DayOfweek(dag) ...
потому что вы смотрите на целую неделю, так что это излишне.