0

我有 2 个相同的表(_impressionsdaily,_impressionsalltime),在每天结束时,我将所有数据从每天移动到所有时间。结构为:ID、purchaseID、impression、unique、date。

我运行以下查询:

SELECT  
    daily.purchaseID,
    SUM(daily.impression + IFNULL(alltime.impression, 0)) AS impression,
    SUM(daily.unique + IFNULL(alltime.unique, 0)) AS `unique`
    FROM _impressionsdaily daily
    LEFT JOIN _impressionsalltime alltime ON alltime.purchaseID= daily.purchaseID
    GROUP BY daily.purchaseID;

问题是,如果所有时间表中有日常购买的商品,我将看不到它们。

基本上,这个想法是总结每天和所有时间的所有印象。

---编辑事情是在每天上午12:00,每日表被复制到所有时间,然后被删除。所以给出的解决方案是错误的..

谢谢你的帮助,丹尼

4

2 回答 2

1

我认为您正在寻找Union Select。尝试这样的事情:

SELECT DISTINCT(p.ID), p.purchaseID
FROM (SELECT *
      FROM _impressionsdaily
      UNION SELECT *
      FROM _impressionsalltime) AS p
GROUP BY p.purchaseID
于 2013-03-04T17:28:04.257 回答
0
SELECT  
daily.purchaseID,
SUM(daily.impression + IFNULL(alltime.impression, 0)) AS impression,
SUM(daily.unique + IFNULL(alltime.unique, 0)) AS `unique`
FROM _impressionsdaily daily
LEFT JOIN _impressionsalltime alltime ON alltime.purchaseID= daily.purchaseID
GROUP BY daily.purchaseID;

在这种情况下,您没有选择 _impressionsalltime 表中的任何字段。

您也可以使用此 sql 从 _impressionsalltime 表中选择字段

SELECT  
alltime.*,
daily.purchaseID,
SUM(daily.impression + IFNULL(alltime.impression, 0)) AS impression,
SUM(daily.unique + IFNULL(alltime.unique, 0)) AS `unique`
FROM _impressionsdaily daily
LEFT JOIN _impressionsalltime alltime ON alltime.purchaseID= daily.purchaseID
GROUP BY daily.purchaseID;
于 2013-03-04T17:34:57.563 回答