2010-04-06 236 views
1

我不知道如何创建一个正确的查询来获得我正在寻找的结果。我有两张桌子。首先有ID,Name列,第二个有date和adminID,它是从表1列ID中引用的。现在,我想要得到的基本上是每个管理员在每个月中每天都会记录的次数。MYSQL选择并按日期分组

ID | Date 
------------------ 
4 | 2010/03/01 
4 | 2010/03/04 
4 | 2010/03/04 
4 | 2010/03/05 
4 | 2010/03/05 

从这样的一个我想每天和每月的数据来获得这样的结果将类似于1,2,对于管理员4月2日共有5个结构:

ID | Date  | Count 
-------------------------- 
4 | 2010/03/01 | 1 
4 | 2010/03/04 | 2 
4 | 2010/03/05 | 2 

回答

2

试试这个:

SELECT COUNT(*), a.name, DATE(l.date) 
    FROM admin a 
    INNER 
    JOIN logins l ON l.admin_id = a.id 
    WHERE l.date > start_date AND l.date < end_date 
GROUP BY a.name, DATE(l.date) 
+0

这个查询也正是我一直在寻找。感谢所有回应的人。 SELECT partnerid AS ID,DATE_FORMAT(date,'%y /%m /%d')AS date,COUNT(*)FROM dispatch GROUP BY partnerid,DATE_FORMAT(date,'%y /%m /%d') – Gil 2010-04-06 23:31:27

+0

我想现在的问题是,如果我通过10/02 /查询并使用“like”,如何才能获得给定月份中的所有日期范围。所以假设结果可能类似于:

​​date​​num。的访问
​​10/02/1​​14
​​10/02/2​​24
​​10/02/3​​0
​​10月2日/ 4​​7
感谢您的帮助球员。 – Gil 2010-04-06 23:42:35

+0

我终于明白了。以下是查询: SELECT id AS ID,DATE_FORMAT(date,'%y /%m /%d')AS日期,count(日期)FROM dispatch WHERE日期LIKE'%2010-02%'GROUP BY id,DATE_FORMAT (日期,'%y /%m /%d') – Gil 2010-04-06 23:53:01

0

编辑:这是工作,测试:

SELECT count(ID) AS day_count,ID,Date FROM Table GROUP BY Date; 

表:

id date 
4 2010-04-13 
4 2010-04-13 
4 2010-04-23 
4 2010-04-11 
4 2010-04-17 
4 2010-04-17 
4 2010-04-17 

输出:

day_count id date 
1 4 2010-04-11 
2 4 2010-04-13 
3 4 2010-04-17 
1 4 2010-04-23 
0

选择ID,COUNT(*)作为numRec,从表名团日期按日期顺序由newRec