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

birdzoe 2015-11-12 10:37:54
请教大家 这个查询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

可根据年条件得不同 得到不同年的结果集
...全文
133 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
birdzoe 2015-11-13
  • 打赏
  • 举报
回复
版主给的解答我看了,那是一个表的交叉输出,但是我这是2表,我就不会了,新手,能麻烦给个解答SQL语句吗 先谢过
birdzoe 2015-11-13
  • 打赏
  • 举报
回复
引用 2 楼 zhangbin1988 的回复:


//给出一月,其它月份的以此类推
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

感谢楼上几位给的解答。特别是这位大神给了具体的语句,但是跑不通啊,是不是那里有错误,麻烦在给看看把
whb0409 2015-11-13
  • 打赏
  • 举报
回复
前面的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
ACMAIN_CHM 2015-11-12
  • 打赏
  • 举报
回复
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...
ayzen1988 2015-11-12
  • 打赏
  • 举报
回复


//给出一月,其它月份的以此类推
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

LongRui888 2015-11-12
  • 打赏
  • 举报
回复
这个的用动态语句来实现了

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧