Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将查询合并到一个数据库中_Mysql - Fatal编程技术网

Mysql 将查询合并到一个数据库中

Mysql 将查询合并到一个数据库中,mysql,Mysql,我有两个查询,我和UNION ALL一起计算,一个是移动潜在客户,另一个是网络潜在客户。但不确定如何将两个结果合并为一个。我的问题是: SELECT CAST( submitdate AS DATE ) as submitdate, COUNT( DISTINCT name, email, phone, `make` , `model` , `mdlyr` , `miles` ) AS webcount FROM leads WHERE email <> '' and mobil

我有两个查询,我和UNION ALL一起计算,一个是移动潜在客户,另一个是网络潜在客户。但不确定如何将两个结果合并为一个。我的问题是:

  SELECT CAST( submitdate AS DATE ) as submitdate, COUNT( DISTINCT name, email, phone, `make` , `model` , `mdlyr` , `miles` ) AS webcount FROM leads WHERE email <> '' and mobile = '0' GROUP BY CAST( submitdate AS DATE )

  UNION ALL

  SELECT CAST( submitdate AS DATE ) as submitdate, COUNT( DISTINCT name, email, phone, `make` , `model` , `mdlyr` , `miles` ) AS mobilecount FROM leads WHERE email <> '' and mobile = '1' GROUP BY CAST( submitdate AS DATE )
当我试图让它看起来像这样时:

  submitdate | webcount
  2014-03-19 | 30
  2014-03-19 | 15
  2014-03-18 | 59
  2014-03-18 | 37
  submitdate | webcount | mobilecount
  2014-03-19 | 30       | 15
  2014-03-18 | 59       | 37

我做错了什么?

这里有一个轴心方法。使用您的联合,但作为预查询。我添加了一个额外的列,通过一个字符将源代码标识为web或mobile。因此,我在外部级别使用它,并按日期进行分组,但任何计数的总和,但仅基于web或移动标志值

select
      PQ.submitdate,
      sum( case when PQ.leadOrigin = 'W' then PQ.DateCnt else 0 end ) as WebCount,
      sum( case when PQ.leadOrigin = 'M' then PQ.DateCnt else 0 end ) as MobileCount
   from
      ( SELECT 
              CAST( submitdate AS DATE ) as submitdate, 
              MAX( 'W' ) as leadOrigin,
              COUNT( DISTINCT name, email, phone, `make` , `model` , `mdlyr` , `miles` ) AS DateCnt
           FROM 
              leads 
           WHERE 
                  email <> '' 
              and mobile = '0' 
           GROUP BY 
              CAST( submitdate AS DATE )
        UNION ALL
        SELECT 
              CAST( submitdate AS DATE ) as submitdate, 
              MAX( 'M' ) as leadOrigin,
              COUNT( DISTINCT name, email, phone, `make` , `model` , `mdlyr` , `miles` ) AS DateCnt 
           FROM 
              leads 
          WHERE email <> '' 
           and mobile = '1' 
          GROUP BY CAST( submitdate AS DATE ) ) PQ
group by
   PQ.submitdate

我可以进行以下查询:

    SELECT a.submitdate, b.webcount, c.mobilecount
        FROM (
            SELECT DISTINCT CAST( submitdate AS DATE ) AS submitdate FROM leads) AS a
            INNER JOIN 
            (SELECT CAST( submitdate AS DATE ) AS submitdate, COUNT( DISTINCT name, email, phone,  `make` ,  `model` ,  `mdlyr` ,  `miles` ) AS webcount FROM leads WHERE email <> '' AND mobile =  '0' GROUP BY CAST( submitdate AS DATE )) AS b ON a.submitdate = b.submitdate
            INNER JOIN 
            (SELECT CAST( submitdate AS DATE ) AS submitdate, COUNT( DISTINCT name, email, phone,  `make` ,  `model` ,  `mdlyr` ,  `miles` ) AS mobilecount FROM leads WHERE email <>  '' AND mobile =  '1' GROUP BY CAST( submitdate AS DATE )) AS c ON b.submitdate = c.submitdate
    ORDER BY a.submitdate DESC

但它只给出了2014年3月16日的日期,当时手机的计数高于0。是否需要添加一些内容,包括所有日期,如果没有,则默认为0?

我在尝试时收到此错误:1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第行使用near'as WebCount,sum case when PQ.leadOrigin='M'然后PQ.DateCnt else 0'的正确语法3@NickCurran,错过了SUM中case/when子句的结尾。我会更多地阅读这篇文章,并记下你是如何做到的,以备将来参考。再次感谢!有一个问题,我会在两个总数的周围加上一个总数,还是做第三种情况并去掉mobile=part更好?@NickCurran,如果你想得到mobile和web的总数,你只需添加另一列sum PQ.DateCnt作为OverallTotal