Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 每天在Select COUNT(*)中合并2个查询_Mysql_Sql_Select_Count_Union - Fatal编程技术网

Mysql 每天在Select COUNT(*)中合并2个查询

Mysql 每天在Select COUNT(*)中合并2个查询,mysql,sql,select,count,union,Mysql,Sql,Select,Count,Union,我有两个表日志和轨道,每个表都有一个时间戳,但名称不同,现在我尝试获取给定商店每天的所有日志,同时在我的轨道表中获取每天的轨道数 SELECT DATE(clicktime), COUNT(shop) FROM LOG WHERE shop = "shop01" AND (clicktime > DATE_SUB(NOW(), INTERVAL 30 DAY)) GROUP BY DATE(clicktime); 此查询每天收集日志表中的所有条目,结果如下 ---------------

我有两个表日志和轨道,每个表都有一个时间戳,但名称不同,现在我尝试获取给定商店每天的所有日志,同时在我的轨道表中获取每天的轨道数

SELECT DATE(clicktime), COUNT(shop)
FROM LOG
WHERE shop = "shop01"
AND (clicktime > DATE_SUB(NOW(), INTERVAL 30 DAY))
GROUP BY DATE(clicktime);
此查询每天收集日志表中的所有条目,结果如下

--------------------------------
ClickTime          |  Clicks
--------------------------------
2014-12-25         |   342    
-------------------------------- 
2014-12-24         |   232
--------------------------------
我在我的第二张桌子上得到了每天的销售额,如下所示

SELECT DATE(last_change) as SaleTime, COUNT(shop) as sale
FROM tracks
WHERE shop = "dd01"
AND (last_change > DATE_SUB(NOW(), INTERVAL 30 DAY))
AND relevant = 1
GROUP BY DATE(last_change)
输出

--------------------------------
SaleTime           |  sales
--------------------------------
2014-12-25         |   42    
-------------------------------- 
2014-12-24         |   32
--------------------------------
我想将这两个查询合并到一个查询中,得到如下输出

-----------------------------------------
Time               |  sales    |  clicks
-----------------------------------------
2014-12-25         |   42      |  342
----------------------------------------- 
2014-12-24         |   32      |  232
-----------------------------------------
我曾尝试使用Union作为子查询,但由于不同的表结构,此子查询在五月的情况下无法工作

有没有办法达到预期的效果

试试这个:

SELECT A.clicktime, A.shopCnt, B.saleCount
FROM (SELECT DATE(clicktime) clicktime, COUNT(shop) AS shopCnt
        FROM LOG
        WHERE shop = "shop01"
        AND (clicktime > DATE_SUB(NOW(), INTERVAL 30 DAY))
        GROUP BY DATE(clicktime)
      ) AS A 
INNER JOIN (SELECT DATE(last_change) AS SaleTime, COUNT(shop) AS saleCount
                FROM tracks
                WHERE shop = "dd01"
                AND (last_change > DATE_SUB(NOW(), INTERVAL 30 DAY))
                AND relevant = 1
                GROUP BY DATE(last_change)
              ) AS B ON A.clicktime = B.SaleTime

我强烈建议您使用
联合
所有方法,而不是
内部联接
。如果您有几天没有销售或点击,则加入将删除记录:

SELECT date, SUM(sales) as sales, SUM(clicks) as clicks
FROM ((SELECT DATE(last_change) as date, COUNT(*) as sales, 0 as clicks
       FROM tracks
       WHERE shop = 'dd01' AND (last_change > DATE_SUB(NOW(), INTERVAL 30 DAY)) AND relevant = 1
       GROUP BY DATE(last_change)
      )
      UNION ALL
      (SELECT DATE(clicktime) as date, 0 as sales, COUNT(*) as clicks
       FROM LOG
       WHERE shop = 'shop01' AND (clicktime > DATE_SUB(NOW(), INTERVAL 30 DAY))
       GROUP BY DATE(clicktime)
      )
     ) d
GROUP BY date;