-2

我有以下两个查询:

SELECT date( FROM_UNIXTIME( user_reg_date ) ) 'Current Date', COUNT( * ) 'registered_user'
FROM users
WHERE user_reg_date >=1341100800
AND user_reg_date <=1374451200
GROUP BY date( FROM_UNIXTIME( user_reg_date ) )

SELECT date( FROM_UNIXTIME( user_last_login ) ) 'Current Date', COUNT( * ) 'logged_in_user'
FROM users
WHERE user_last_login >=1341100800
AND user_last_login <=1374451200
GROUP BY date( FROM_UNIXTIME( user_last_login ) )

现在我想合并我从上面的查询中得到的两个数组,每个数组元素应该是下面的形式。

date = > array(registered_user, logged_in_user)

任何人都可以在这方面帮助我吗?提前致谢。

4

2 回答 2

2

使用UNION喜欢

SELECT date( FROM_UNIXTIME( user_reg_date ) ) 'Current Date', COUNT( * ) 'registered_user'
FROM users
WHERE user_reg_date >=1341100800
AND user_reg_date <=1374451200
GROUP BY date( FROM_UNIXTIME( user_reg_date ) )

UNION

SELECT date( FROM_UNIXTIME( user_last_login ) ) 'Current Date', COUNT( * )   'logged_in_user'
FROM users
WHERE user_last_login >=1341100800
AND user_last_login <=1374451200
GROUP BY date( FROM_UNIXTIME( user_last_login ) )

但要小心这两个表具有的重复列。尝试使用表对象调用它们,例如

table1.id,table2.id

考虑id在两个表中都存在。

于 2013-07-22T10:36:41.477 回答
2

您可以UNION ALL稍后使用 a 进行非常简单的按日期分组SUM来获取值;

SELECT DATE(FROM_UNIXTIME(date)) date, 
       SUM(registered_user) registered_user, 
       SUM(logged_in_user) logged_in_user
FROM (
  SELECT user_reg_date date, 1 registered_user, 0 logged_in_user FROM users
  UNION ALL
  SELECT user_last_login,    0 registered_user, 1 logged_in_user FROM users
) a
WHERE date >= 1341100800 AND date <= 1374451200
GROUP BY DATE(FROM_UNIXTIME(date));
于 2013-07-22T10:55:58.367 回答