在一个表中使用连接

时间:2013-12-12 19:49:15

标签: mysql sql join

我还不知道如何使用连接,每当我尝试使用连接时,我的查询都无效。

我想要的是显示按天分组的用户。

TABLE USER

  • USER_ID
  • register_date

但如果有一天没有注册会怎么样?那天没有显示,但我想让它显示出来。

select COUNT(a.user_id) as count1, a.register_date as count2 
from user a 
left outer join user b on a.user_id = b.user_id 
GROUP BY a.register_date

我尝试从一些示例中调整我想要的内容,但之前的查询不起作用,因为它没有显示所有日期。

我的内容如下:

COUNT - > DATE

  • 1 ------- 01-01-2013
  • 0 ------- 02-01-2013
  • 5 ------- 03-01-2013
  • 0 ------- 04-01-2013
  • 0 ------- 05-01-2013

1 个答案:

答案 0 :(得分:3)

你正在做的JOIN是不必要的,因为它没有给你任何额外的信息,而不是你会这样做:

select COUNT(a.user_id) as count1,
  a.register_date
from user a
group by a.register_date

这应该为您提供表中每个register_date中的用户数。如果没有注册,这样的事情将无效。

您必须以某种方式将日期提供给它,然后使用表USERS的LEFT JOIN来获取COUNT是合适的。例如,您可以执行一个包含您要查询的所有日期的表名为dateTable:

SELECT t1.date,COUNT(a.user_id)
FROM dateTable t1
LEFT JOIN users a ON t1.date = a.register_date
GROUP BY t1.date;

有关如何在Google上创建日历表或google sql日历表的说明,请参阅this question。关于这个主题有很多有用的信息。