具有多嵌套JOIN和Distinct Limited Ordering的MySQL语句

时间:2013-12-19 21:40:58

标签: mysql sql nested left-join

我正在尝试根据三个连接构建结果列表

我创建了一个潜在客户表,因为我的销售团队对潜在客户将事件记录记录附加到潜在客户的线索采取了措施。 1个引线可以有很多音符。每个笔记都有一个时间戳,还有一个日期/时间字段,用于设置未来日期,以便安排回拨和约会。

我在构建列表方面没有任何问题,我的所有潜在客户都与各自的事件说明相关联,但在这种特殊情况下我想要做的是查询较小的潜在客户列表,这些潜在客户列表只与包含“ date_time列中的最新“/最高值。

在过去的几天里,我一直在挖掘堆栈,特别是试图从我的陈述中获得所需的结果。我得到所有相关事件记录记录的所有主要记录,或者我得到1,无论我使用什么(GROUP BY date_time ASC LIMIT 1)或(ORDER BY date_time ASC LIMIT 1)我甚至试图建立每个lead.id只有最高预定记录的视图。

SELECT
  rr_leads.id AS 'Lead', 
  rr_leads.first,
  rr_leads.last,
  rr_leads.company,
  rr_leads.phone,
  rr_leads.email,
  rr_leads.city,
  rr_leads.zip,
  rr_leads.status,
  z.noteid,
  z.taskid,
  z.scheduled,
  z.event

  FROM rr_leads
  LEFT JOIN
      ( 
        SELECT 
    rr_lead_notes.lead_id,
            rr_lead_notes.id AS 'noteid', 
    rr_lead_tasks.id AS 'taskid', 
    rr_lead_notes.date_time AS 'scheduled', 
    rr_lead_notes.task_note, 
    rr_lead_tasks.task_step AS 'event'

        FROM rr_lead_notes
        LEFT JOIN rr_lead_tasks
    ON rr_lead_notes.task_note = rr_lead_tasks.task_step
        AND rr_lead_notes.id IS NOT NULL
        AND rr_lead_notes.task_note IS NOT NULL
        GROUP BY rr_lead_notes.id DESC

) z

  ON rr_leads.id = z.lead_id
  WHERE rr_leads.id IS NOT NULL
  AND z.noteid IS NOT NULL
  ORDER BY rr_leads.id DESC

1 个答案:

答案 0 :(得分:1)

以下是获取与最近事件相关联的数据的一般概念。您可以根据自己的具体情况进行调整。

select yourfields
from table1 join othertables etc
join
(select id, max(time_stamp) maxts
from table1
where whatever
group by id) temp on table1.id = temp.id
and table1.time_stamp = maxts
where whatever

确保主查询和子查询中的where子句相同。