Code Bye

讨教一个2表合并查询的SQL写法

讨教大家 这个查询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
可根据年条件得不同 得到不同年的结果集
 
解决方案: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…
解决方案: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

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明讨教一个2表合并查询的SQL写法