0

我想使用表格进行操作,但到目前为止我发现的唯一解决方案是首先创建一些表格并将它们连接在一起以获得所需的结果。

我试图避免创建表并在我的 MySQL 查询末尾删除它们,顺便说一句,我在 phpmyadmin 页面上运行。

这是数据:我有一个包含 user_id、columnA_unixtime、columnB_unixtime 的表——这意味着对于每个用户,数据库中存储了两个 unix_time,用于两个不同的事件。

user_id eventA_join eventB_join
1 1321652009 1321652009
2 0 1321652257
3 0 1321668650
4 1321669261 0

我想要的是一张表格,显示每天有多少用户参加了这两个活动。像这样的东西(只是一个样本)

日事件A 事件B
2011 年 11 月 18 日 3 2
11/19/11 11 8
2011 年 11 月 20 日 6 3
11/21/11 17 11

这是我到目前为止使用的代码:

CREATE TABLE table1(
day VARCHAR(256),
eventA_count INT);

INSERT INTO table1 (day, eventA_count)
(SELECT DATE(FROM_UNIXTIME('eventA_join') ) AS 'day', COUNT('user_id') AS 'eventA_count'
FROM org_table
WHERE 'eventA_join' > 0
GROUP BY day);

CREATE TABLE table2(
day VARCHAR(256),
eventB_count INT);

INSERT INTO table2 (day, eventB_count)
(SELECT DATE(FROM_UNIXTIME('eventB_join') ) AS 'day', COUNT('user_id') AS 'eventB_count'
FROM org_table
WHERE 'eventB_join' > 0
GROUP BY day);


SELECT t.day, t1.eventA_count, t2.eventB_count FROM
(SELECT DISTINCT day FROM table1
UNION
SELECT DISTINCT day FROM table2) t
LEFT JOIN table1 t1 
ON t.day = t1.day
LEFT JOIN table2 t2
ON t.day = t2.day

DROP table2;
DROP table1;

据我尝试,我无法在 phpmyadmin 中使用表变量,也无法使用模板表,因为当我尝试加入它们时,无法多次引用模板表(错误 #10327 无法重新打开临时表)一起。

无论如何我避免创建表格但获得我正在寻找的东西?有什么想法吗?

编辑:两个表都从“org_table”获取数据,现在在代码中更正了。

4

1 回答 1

0

使用单个查询很容易做到这一点。你只需要 UNION ALL:

select date, sum(IsEventA) as EventA, sum(isEventB) as EventB
from ((select user_id, DATE(FROM_UNIXTIME('eventA_join') as date,
              1 as IsEventA, 0 as IsEventB
       from table1
       where eventA_join > 0
      ) union all
      (select user_id, DATE(FROM_UNIXTIME('eventB_join') as date,
              0 as IsEventA, 1 as IsEventB
       from table1
       where eventB_join > 0
      )
     ) t
group by date
order by 1
于 2012-08-09T01:28:51.753 回答