mysql date_add 2 Mal in der Prozedur
-
11-12-2019 - |
Frage
Ich möchte Date_add 2 Mal in einer Prozedur verwenden, aber es gibt 0 Zeilen zurück (obwohl es Zeilen zurückgeben sollte)
Hier ist die Vorgehensweise
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;
es funktioniert ohne date_add
Dank im Voraus!
//bearbeiten
Was ich jetzt habe:
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;
Aber die ab.absentid wird nicht abgerufen, woran liegt das?:(
Lösung
Ich bin mir nicht sicher genau was Sie wollen, aber versuchen Sie die ganze Woche über etwas wie:
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;
Ich benutze BETWEEN
um den Datumsbereich anzugeben ap.appointmentdate
.Der av.avDays
wird geändert, um entweder damit zu korrelieren ap.appointmentdate
oder auch Zeilen ohne Termin anzeigen (dieses Verhalten wird angenommen, weil Sie einen haben). LEFT JOIN
An tbl_appointment
).Ich habe aufgehört DayOfweek(dag) ...
Weil man sich eine ganze Woche vorstellt, ist das überflüssig.