有4张表。
用户表
登陆id 密码 注册时间 权限
aa ** 20060201 1
bb ** 20060202 2
cc ** 20060203 2
dd ** 20060204 1用户登录表
登陆id 登陆时间
aa 20060301
cc 20060302
dd 20060302用户信息表
登陆id 姓名 性别
aa 张三 男
cc 李四 女文章信息表
id 登陆id 标题 类别 发表时间
1 aa 呵呵 .net 20060302
2 aa 哈哈 java 20060303
3 cc 嘿嘿 .net 20060301
4 cc asdf .net 20060304我需要等到的结果是:
登陆id 姓名 性别 标题 类别 登陆时间 。
条件:满足用户表.权限=1 ,把用户表的所有用户都显示出来,不管是否发表文章、是否登陆过。
排序:order by 用户登录表.登陆时间 desc ,用户表.注册时间 desc
如:
登陆id 姓名 性别 标题 类别 登陆时间
aa 张三 男 哈哈 java 20060301
bb
cc 李四 女 asdf .net 20060302
dd 20060302
用户表
登陆id 密码 注册时间 权限
aa ** 20060201 1
bb ** 20060202 2
cc ** 20060203 2
dd ** 20060204 1用户登录表
登陆id 登陆时间
aa 20060301
cc 20060302
dd 20060302用户信息表
登陆id 姓名 性别
aa 张三 男
cc 李四 女文章信息表
id 登陆id 标题 类别 发表时间
1 aa 呵呵 .net 20060302
2 aa 哈哈 java 20060303
3 cc 嘿嘿 .net 20060301
4 cc asdf .net 20060304我需要等到的结果是:
登陆id 姓名 性别 标题 类别 登陆时间 。
条件:满足用户表.权限=1 ,把用户表的所有用户都显示出来,不管是否发表文章、是否登陆过。
排序:order by 用户登录表.登陆时间 desc ,用户表.注册时间 desc
如:
登陆id 姓名 性别 标题 类别 登陆时间
aa 张三 男 哈哈 java 20060301
bb
cc 李四 女 asdf .net 20060302
dd 20060302
1 aa 呵呵 .net 20060302
没有选出来?
from 用户表 a
left join 用户信息表 b on a.登陆id=b.登陆id
left join (
select 登陆id,max(登陆时间) as 登陆时间
from 用户登录表
group by 登陆id
) as c on a.登陆id=c.登陆id
left join (
select *
from 文章信息表 x
where id=(select top 1 id from 文章信息表 where 登陆id=x.登陆id order by 发表时间)
) as d on a.登陆id=d.登陆id and a.权限=1
order by c.登陆时间 desc ,d.注册时间 desc
from 用户表 a
left join 用户信息表 b on a.登陆id=b.登陆id
left join (
select 登陆id,max(登陆时间) as 登陆时间
from 用户登录表
group by 登陆id
) as c on a.登陆id=c.登陆id
left join (
select *
from 文章信息表 x
where id=(select top 1 id from 文章信息表 where 登陆id=x.登陆id order by 发表时间 desc)
) as d on a.登陆id=d.登陆id --and a.权限=1
order by c.登陆时间 desc ,d.注册时间 desc