我有以下问题:
SELECT
t.aff_id,
Ifnull(t.campaign_name, "direct") AS campaign_name,
Count(t.uuid) AS visits,
Count(DISTINCT l.trader_id) AS leads
FROM trackings AS t
LEFT JOIN (SELECT uuid,
trader_id
FROM leads
WHERE aff_id = "1"
AND created_at BETWEEN "2015-05-01 00:00:00" AND
"2015-05-20 23:59:59") AS l
ON l.uuid = t.uuid
WHERE `t`.`created_at` BETWEEN '2015-05-01 00:00:00' AND '2015-05-20 23:59:59'
AND `t`.`aff_id` = '1'
GROUP BY `t`.`campaign_name`
leads 表日期范围没有影响,对于这样的查询,正确的结构应该是什么? http://sqlfiddle.com/#!9/5d125/2
最佳答案
我认为加入可以达到预期的结果:
SELECT
t.aff_id,
IFNULL(t.campaign_name, 'direct') AS campaign_name,
COUNT(t.uuid) AS visits,
COUNT(DISTINCT l.trader_id) AS leads
FROM trackings AS t
LEFT JOIN leads AS l
ON l.uuid = t.uuid
AND l.created_at BETWEEN '2015-05-01 00:00:00' AND '2015-05-20 23:59:59'
AND aff_id = '1'
WHERE
t.created_at BETWEEN '2015-05-01 00:00:00' AND '2015-05-20 23:59:59'
AND t.aff_id = '1'
GROUP BY
campaign_name
;
关于mysql - 左连接表并获取每个表的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30349197/