MySql在新列中包含多个关系



我有多个表,其中包含许多不同潜在客户的联系信息。有一个表包含ID和名称"leads"的列表,一个表具有ID和电话号码"phones"的列表以及一个将两者链接在一起的表'lead_phones。有些联系人有一个人的多个电话号码。当我运行这样的查询时:

SELECT l.created,
    l.id,
    l.first_name,
    l.last_name,
    ph.number phone1,
    #IF(COUNT(ph.number) > 1, *second phone*, null) AS phone2,
    e.email email
FROM leads l
LEFT JOIN lead_phones lp ON lp.lead_id = l.id
LEFT JOIN phones ph on ph.id = lp.phone_id
LEFT JOIN lead_emails le ON le.lead_id = l.id
LEFT JOIN emails e on e.id = le.email_id
ORDER BY l.created DESC;

我有一张看起来像的桌子

created             id    first_name last_name phone      email
2016-03-22 15:53:01 45620 Jimmy      Dean      5551234567 jdean@something.com
2016-03-22 15:53:00 45619 John       Smith     5554561234 smith@somethingelse.com
2016-03-22 15:51:54 45618 Betty      Boo       5552582585 betty@betty.com 
2016-03-22 15:50:02 45617 Betty      Boo       5551478965 betty@betty.com

我真正想做的是能够把Betty Boo和1号和2号电话放在一排。我的查询中的评论行试图得到我想要的东西,我只是不知道如何完成。

感谢

您正在尝试pivot您的结果。有点不清楚应该返回哪个id字段(预期结果会有所帮助),但假设每个潜在客户最多只能有2个电话号码,那么这里有一个使用minmax的选项:

SELECT max(l.created) created,
    max(l.id) id,
    l.first_name,
    l.last_name,
    min(ph.number) phone1,
    max(ph.number) phone2,
    e.email email
FROM leads l
    LEFT JOIN lead_phones lp ON lp.lead_id = l.id
    LEFT JOIN phones ph on ph.id = lp.phone_id
    LEFT JOIN lead_emails le ON le.lead_id = l.id
    LEFT JOIN emails e on e.id = le.email_id
GROUP BY l.first_name, l.last_name, e.email

最新更新