我正在尝试做一个稍微复杂的查询,我几乎拥有我需要的东西,除了我的一个连接我没有得到预期的数据。
我的尝试
SELECT email.*, email_type.*, email_subtype.*, email_dailytotal.*, SUM(email_dailytotal.fullconversions - (email_dailytotal.duplicates + email_dailytotal.invalids)) as validleads, email_week.*, SUM(adjustment) as total_adjustment, email_costmethod.*
FROM email
LEFT JOIN email_type on email.type = email_type.type_id
LEFT JOIN email_subtype on email_subtype.type_id = email_type.type_id
LEFT JOIN email_dailytotal on email_dailytotal.email_id = email.email_id
LEFT JOIN email_week on email_week.email_id = email.email_id
LEFT JOIN email_costmethod on email_costmethod.costmethod_id = email.costmethod
WHERE email.email_id = '12163'
AND business IN ("group", "dead")
AND agency="MFC"
AND start_date >="2013-02-01"
GROUP BY email.email_id, email_dailytotal.oeyearno
ORDER BY email.email_id DESC
我几乎得到了我想要的,除非我email_dailytotal
加入email
:
LEFT JOIN email_dailytotal on email_dailytotal.email_id = email.email_id
因为我只从该email_dailytotal
广告系列的所有行中获取其中一行而不是所有行。
我可以用这个基本查询来做到这一点:
SELECT SUM(fullconversions) FROM email_dailytotal WHERE email_id = 12163
结果在哪里,27
但在我的整体查询中,我得到的第一行恰好是1
.
的最小化结构email_dailytotal
是:
email_id | fullconversions | summarydate |
因此,它包含活动每一天的数据:
12163 | 1 | 2013-02-27
12163 | 10 | 2013-02-26
12163 | 15 | 2013-02-25
12163 | 1 | 2013-02-22
所以在我的加入中,我得到了最后一行而不是总和。
谁能指出我哪里出错了?
PS我为这个问题的混乱道歉,我试图制作一个sqlfiddle,但因为我的构建模式超过8000个字符它不起作用,如果它有助于任何人回答,我将它包含在下面。
我通常会展示表格的结构,但我需要几个小时才能将其格式化为合理的标准。
数据