2015-10-20 173 views
0

我有2个表请参见链接和当前正在运行的查询我面临
1.服用太多的时间来执行
2.我想如果 http://sqlfiddle.com/#!9/40d9d/2MySQL的左与交叉连接的连接查询问题

问题日期范围内的日期'x'在tbl_appoitmens表中没有任何信息,那么很多结果显示为零,但所有AppointmentTimeID都在tbl_appointmentschedule_details中。
3.我想验证这3个新列AppointmentTypeID,AppointemntStatusAvailableInMarkettbl_appointments
4. ScheduleIDtbl_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 
+1

什么是你的问题? SQL Fiddle非常棒,但示例数据和您的查询也应该出现在您的问题中。 SQL小提琴并不总是起来。 –

+0

你的主要关键是什么? – Strawberry

+0

主键是tbl_appointmentschedule_details在tbl_appointments和TRANSID的AppointmentID http://stackoverflow.com/questions/33193053/mysql-left-outer-join-is-having-some-final-results-issue/ 请参阅这篇文章 –

回答

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; 
+0

罗德尼,它的完美,但我不知道为什么我得到每一个日期1 ZERO值像AppointmentTimeID:0,日期:2015-10-16,NumberOfSlots:0 ...我使用的MySQL版本5.6.17 看短屏。 http://prntscr.com/8tnlvx –

+0

@AdilIrshad再试一次,也许不同的原因是MySQL版本 –

+0

可爱的@rodney谢谢你 –