【问题标题】:left join table and get date range per each table左连接表并获取每个表的日期范围
【发布时间】:2015-05-20 12:06:44
【问题描述】:

我有以下疑问:

    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

【问题讨论】:

    标签: mysql sql left-join


    【解决方案1】:

    我认为加入可以达到预期的结果:

    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
    ;
    

    【讨论】:

      猜你喜欢
      • 2018-12-19
      • 2017-08-17
      • 1970-01-01
      • 2020-01-07
      • 2013-03-02
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      相关资源
      最近更新 更多