作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的组 75(user_group) 有 23 个用户。
然后我有表 users_participated,其中仅当用户参与时才设置行(有时它存在但为 0(不参与))。
现在我需要显示本月每个用户的每一天他是否参与。
我可以用 php 循环来做到这一点。但我想知道是否有一种方法可以仅使用单个 mysql 查询来完成此操作。
//output html table should look like y = yes n = no 1,2,3,5 are days in month
user | 1 | 2 | 3 | 4 | 5..
user1| y | n | y | n | n
user2| n | y | y | n | y
// user table
id | user | group
1 | user1 | 75
2 | user2 | 75
3 | user3 | 75
4 | user4 | 68
//participate table
user_id | participated | date_added
1 | 1 | 2014-03-29 11:03:00
2 | 0 | 2014-03-29 11:03:00
//有时它可以是 0,有时如果它为 null,它甚至不在这个表中,如果你知道我的意思的话。
我该怎么做?
最佳答案
一个简单的交叉表查询就可以做到这一点:
SELECT u.user,
max( if(day(p.date_added) = 1, p.participated, 0 ) ) day1,
max( if(day(p.date_added) = 2, p.participated, 0 ) ) day2,
..............
..............
..............
max( if(day(p.date_added) = 28, p.participated, 0 ) ) day28,
max( if(day(p.date_added) = 29, p.participated, 0 ) ) day29,
max( if(day(p.date_added) = 30, p.participated, 0 ) ) day30,
max( if(day(p.date_added) = 31, p.participated, 0 ) ) day31
FROM user u
JOIN participate p
ON u.id = p.user_id
WHERE p.date_added >= '2014-03-01'
AND p.date_added < '2014-04-01'
GROUP BY u.id
关于mysql - 每个用户行当月每天的统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22728849/
似乎无法找到答案 - 所以我想我会试一试。 我已经阅读了几个关于如何检测背景事件点击的答案。如:Detect click on background event 然而,我发现当两个或更多背景事件位于同
我在处理插入日期时间值时遇到了一个奇怪的问题。它发生在插入 DATETIME 或 TIMESTAMP 类型的列时,以及使用 STR_TO_DATE 函数时。 当月份、日期、小时或分钟为数字 8 或 9
我是一名优秀的程序员,十分优秀!