mysql - 左连接表并获取每个表的日期范围

标签 mysql sql left-join

我有以下问题:

    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/

相关文章:

php - 如何查找相同列表中的电子邮件?

c# - 在一个查询中使用 MySqlCommand 将多条记录插入 MySQL C# (MySQLConnector) & 用于转义引号的命令参数

php - 安装最新版本的 MySQL 后出现错误 : #1366 - Incorrect integer value: '' for column 'group_id' at row 1

java - hibernate 中的createSQLQuery使用Prepared Statement?

c# - 从点和关系形成三角形

hadoop - 重新编写联接查询

mysql - mysql中哪种数据类型更适合固定长度的数据

php - 我想使用 jquery 在 html 的文本框中检索选定的行数据

php - 使用 Count(*) As 时如何从 mysql 获取结果

sql - 加入表时 SQL 查询速度慢