使用JOIN获取记录,使用

时间:2017-06-16 10:13:31

标签: php mysql group-by max left-join

咨询顾问表 - counsellorlead table

反馈表 - feedback table

后续表格 - followup table

表1是consllorlead

表2 - 反馈

表3 - 跟进

情景是在辅导员主页上,数据以下列格式显示在所有3个表格中 -

Leadid | Mobileno |来电者姓名| leadstatus |后续数量| followupdate |下一次日期

为此,我使用3个MySQL quires。

现在我的查询是 -

我使用LEFT JOIN在第一次查询中从表1(顾问主管)和表2(反馈)中获取记录(leadid,mobileno,callername,leadstatus),因为我想要表1中的所有记录(顾问主管)

在第二个查询中,我从表3(后续)中获取记录(没有后续跟踪)

从第3个查询开始,我从表3(后续)中获取后续日期和下一个日期

列描述 -

跟进次数 - 特定潜水员在此处显示的跟进次数。 (如果采取3次后续,则结果为3)

跟进日期 - 此处显示最新的跟进日期。 (如果3次随访,则第3次随访记录)

Nextdate - 此处显示下一次跟进的日期。 (如果3次随访,则第3次随访记录)

从查询2和查询3中获取记录后,我将后续表的followup_lead_id列与advllorlead表的leadid列进行比较,使用if else条件和leadid匹配时我显示该记录。

所有记录都按要求显示,但需要很长时间,因为有牵头比较(后续表中有大约12000条记录,并且会逐日增加)。这会增加页面加载时间,通常需要15分钟才能完成。

对于解决方案,我必须在单个查询中获取所有3个表的数据。但我无法根据要求创建此单个查询以获取记录。

Leadid | Mobileno |来电者姓名| leadstatus |后续数量| followupdate |下一次日期

10125 | 95852 ***** |约翰|新鲜铅| 3 | 16-06-2017 | 22-06-2017

 16-06-2017 is latest followup taken date of that particular lead

 22-06-2017 is a date when next followup will take                                              

请帮帮我。

1 个答案:

答案 0 :(得分:1)

尝试以下查询。我认为它应该按照你的要求工作。

select leadid, mobileno, callername, leadstatus,
( select count(fu.mobino) from followup fu
    where fu.followup_lead_id = cl.leadid ) num_follow_ups,
( select date_format(max(fu.followupdate), '%d-%m-%Y') from followup fu
    where fu.followup_lead_id = cl.leadid ) followupdate,
( select date_format(max(fu.nextdate), '%d-%m-%Y') from followup fu
    where fu.followup_lead_id = cl.leadid ) nextdate    
from counsellorlead cl
left join feedback fb on cl.leadid = fb.feedback_leadid
where cl.counsellorid = '1';