我有2个表请查看链接和当前运行的查询 http://sqlfiddle.com/#!9/40d9d/2
我正面临的问题
1.花费大量时间执行
2.我想如果在日期范围日期'x'之间没有tbl_appoitmens表中的信息那么多显示结果为零,但tbl_appointmentschedule_details中的所有AppointmentTimeID。
3.我想验证来自AppointmentTypeID
的这3个新列AppointemntStatus
,AvailableInMarket
和tbl_appointments
。
4. ScheduleID
来自tbl_appointmentschedule_details
查询输出速度确实很重要我们可能会同时选择2 - 3年的记录。
结果我想要显示像
AppointmentTimeID AppointmentDate NoOfApplicants 22 2015-10-16 2 23 2015-10-16 4 24 2015-10-16 5 25 2015-10-16 2 26 2015-10-16 2 22 2015-10-17 5 23 2015-10-17 2 24 2015-10-17 2 25 2015-10-17 2 26 2015-10-17 2 22 2015-10-18 0 23 2015-10-18 0 24 2015-10-18 0 25 2015-10-18 0 26 2015-10-18 0
答案 0 :(得分:0)
试试这个:
select t4.AppointmentTimeID, t4.AppointmentDate,ifnull(t5.NumberOfApplicants,0)
from
(select distinct t2.AppointmentTimeID, t1.AppointmentDate
from tbl_appointmentschedule_details t2 join (select t.AppointmentDate from (
SELECT adddate('2015-10-16', @rownum := @rownum + 1) as 'AppointmentDate' FROM tbl_appointments
JOIN (SELECT @rownum := -1) r
LIMIT 31
) t
where t.AppointmentDate between '2015-10-16' and '2015-10-18') t1) t4
left join
(SELECT t2.AppointmentTimeID,t1.AppointmentDate,sum(t1.NumberOfApplicants) as 'NumberOfApplicants'
FROM tbl_appointmentschedule_details t2
LEFT JOIN tbl_appointments t1 on t2.AppointmentTimeID=t1.AppointmentTimeID
WHERE t1.AppointmentStatus='Pending' AND t1.AvailableInMarket=0
GROUP BY t2.AppointmentTimeID,t1.AppointmentDate) t5
on t4.AppointmentDate=t5.AppointmentDate and t4.AppointmentTimeID=t5.AppointmentTimeID
having t4.AppointmentTimeID!=0
order by t4.AppointmentDate,t4.AppointmentTimeID;