讨教大家 这个查询SQL怎么样写
本人有2个表,第一个表基础信息表,info
id name(姓名) age(年龄)
1 张三 18
2 李四 20
3 王五 19
第二表是记录系统登录时间表 signtime
id mid dtime(登录时间)
1 1 2015-01-10
2 3 2015 -02 -11
3 2 2015 -03 -09
4 1 2015-01-12
5 1 2015-04-05
想要得到这样输出结果
id 姓名 年龄 一月登录次数 二月登录次数 三月登录次数 四登录次数 。十二月登录次数
1 张三 18 2 1
2 李四 20 1
3 王五 19 1
可根据年条件得不同 得到不同年的结果集
本人有2个表,第一个表基础信息表,info
id name(姓名) age(年龄)
1 张三 18
2 李四 20
3 王五 19
第二表是记录系统登录时间表 signtime
id mid dtime(登录时间)
1 1 2015-01-10
2 3 2015 -02 -11
3 2 2015 -03 -09
4 1 2015-01-12
5 1 2015-04-05
想要得到这样输出结果
id 姓名 年龄 一月登录次数 二月登录次数 三月登录次数 四登录次数 。十二月登录次数
1 张三 18 2 1
2 李四 20 1
3 王五 19 1
可根据年条件得不同 得到不同年的结果集
解决方案:15分
//给出一月,其它月份的以此类推 select a.*,ifnull(b.jan_num,0) from info a left join ( select mid, sum(case month(dtime)=1 when 1 else 0 end)jan_num from signtime group by mid )b on a.id = b.mid
解决方案:15分
http://blog.csdn.net/acmain_chm/article/details/4283943
MySQL交叉表
在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c…
MySQL交叉表
在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c…
解决方案:20分
前面的sql case when 语法貌似有误 你 改成这样:
select a.*,ifnull(b.jan_num,0) from info a left join
(
select
mid,
sum(case when month(dtime)=1 then 1 else 0 end) jan_num
from signtime group by mid
) b on a.id = b.mid
select a.*,ifnull(b.jan_num,0) from info a left join
(
select
mid,
sum(case when month(dtime)=1 then 1 else 0 end) jan_num
from signtime group by mid
) b on a.id = b.mid