我有下表
USER COMMENT
--------------------- -----------------------
| id | name | id | user_id | date
--------------------- -----------------------
| 1 | joe | 1 | 1 | 2014-10-10
| 2 | jane | 1 | 1 | 2014-10-10
| 3 | ted | 1 | 3 | 2014-10-11
我的目标是创建统计数据比较图表。所以我想提取每个当前工作日,每个用户添加的评论数量。 预期的数组
-----------------------------
2014-10-10
-----------------------------
joe | 2
jane | 0
ted | 0
------------------------------
2014-10-11
------------------------------
joe | 0
jane | 0
ted | 1
我做了一个简单的左连接查询和双组by,但结果没有按预期格式化。
也许,我必须使用php排序和合并结果?!
感谢您的帮助
答案 0 :(得分:1)
这是我的尝试:
SELECT c1.date, c1.name, COUNT(c2.date)
FROM (
SELECT DISTINCT c.date, u.name, u.id
FROM COMMENT c
CROSS JOIN USER u) c1
LEFT JOIN COMMENT c2
ON c1.id = c2.user_id AND c1.date = c2.date
GROUP BY c1.date, c1.id
困难在于获取每个日期的所有用户的列表,这是我使用子查询c1
生成的。
答案 1 :(得分:1)
我会做的是
Select User.name , Comment.date
From Comment Left Join User On Comment.user_id = User.id
Order By Comment.date Desc
这将返回一个列表,其中包含评论为+日期的用户。
现在我将解析结果集: -
$query = "query above";
$rowset = $db->fetchAll($query);
$result = array();
foreach ($rowset as $row) {
$result[$row['date']][$row[User]] += 1
}
这会给你一个数组
Date1
=>user1
=>count
=>user2
=>count
Date2
=>user3
=>count
=>user4
=>count