求一条sql语句!!!

zl13 2004-08-31 01:14:24
table1:
fd_pid(序号)
fd_uid(人员编号)
fd_date(建立日期)

table2
fd_rid(回复编号)
fd_pid(序号)
fd_uid(回复人员编号)
fd_rdate(回复日期)

table3
fd_uid(人员编号)
fd_uname(人员名称)

不论table2是否有资料都需将table1的数据库全部显示出来

格式如下
人员名称 建立日期 回复数 最后回复日期 最后回复人员名称
xxxx xxxx xxxx xxxxxx xxxxxxxxxxx

研究了半天了,万般无奈求助,望大家帮忙
...全文
159 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tx1icenhe 2004-08-31
  • 打赏
  • 举报
回复
如果fd_rdate重复呢?
一样吗?
rouqu 2004-08-31
  • 打赏
  • 举报
回复
其实简单的问题:)
zjcxc 元老 2004-08-31
  • 打赏
  • 举报
回复
max(fd_rdate)

top 1 fd_rdate ... order by fd_rdate desc
是一样的


gaodongsheng 2004-08-31
  • 打赏
  • 举报
回复
经过语法测试,没有经过数据测试,看看行吗?
select a.fd_uname 人员名称,a.fd_date 建立日期,d.countReCall 回复数, d.df_rdate 最后回复日期,d.fd_name 最后回复人员名称
from (select fd_pid,fd_uid,fd_uname from table1,table2
where table1.fd_uid = table2.fd_uid) a
left join
(
select b.countReCall,b.df_rdate,c.fd_name,b.fd_pid from
(select count(*) countReCall,max(df_rdate) df_rdate,fd_pid from table2 group by fd_pid) b,table3 c
where b.fd_uid = c.fd_uid
) d
on a.fd_pid = d.fd_pid
tx1icenhe 2004-08-31
  • 打赏
  • 举报
回复
max和 top 1 ... order by ... desc
是不同的

zjcxc 元老 2004-08-31
  • 打赏
  • 举报
回复

select 人员名称=c.fd_uname,建立日期=a.fd_date
,回复数=b.回复数,最后回复日期=b.fd_rdate
,最后回复人员名称=d.fd_uname
from table1 a
left join(
select a.*,fd_uid=max(b.fd_uid)
from(
select fd_pid,回复数=count(*),fd_rdate=max(fd_rdate)
from table2
group by fd_pid
)a,table2 b
where a.fd_pid=b.fd_pid and a.fd_rdate=b.fd_rdate
group by a.fd_pid,回复数,fd_rdate
)b on a.fd_pid=b.fd_pid
left join table3 c on a.fd_uid=c.fd_uid
left join table3 d on b.fd_uid=d.fd_uid

Andy__Huang 2004-08-31
  • 打赏
  • 举报
回复
select a.fd_uname,a.fd_date,回复数=count(b.*),b.fd_rdate,b.fd_uname from
(select table1.fd_uid,table3.fd_uname,table1.fd_date from table1 inner join table3 on table1.fd_uid=table3.fd_uid)a left join
(select table2.fd_uid,table2.fd_uid,table3.fd_uname,max(fd_rdate) as fd_rdate from
table2 inner join table3 on table1.fd_uid=table3.fd_uid)b
on a.fd_uid=b.fd_uid
tx1icenhe 2004-08-31
  • 打赏
  • 举报
回复
由于对应关系可能误解,如果错误,请说明对应关系和错误信息
tx1icenhe 2004-08-31
  • 打赏
  • 举报
回复
table1和table2的对应关系没说清楚,猜一下:

select y.fd_uname as 人员名称,
x.fd_date as 建立日期,
z.回复数,
z.最后回复日期,
z.最后回复人员名称
from table1 x inner join table3 y
on x.fd_uid=y.fd_uid
left join (
select
select fd_pid,
count(*) as 回复数,
(select top 1 fd_rdate
from table2
where fd_pid=a.fd_pid
order by fd_rdate desc
) as 最后回复日期,
(select top 1 c.fd_uname
from table2 b,table3 c
where b.fd_pid=a.fd_pid
and b.fd_uid=c.fd_uid
order by b.fd_rdate desc
) as 最后回复人员名称
from table2 a
group by fd_pid
) as z
on x.fd_pid=z.fd_pid
zkh7912 2004-08-31
  • 打赏
  • 举报
回复
up
azsoft 2004-08-31
  • 打赏
  • 举报
回复
select table3.fd_uname as 人员名称,
table1.fd_date as 建立日期,
count(1) as 回复数,
(select max(fd_rdate) from table2 a where a.fd_pid=table2.fd_pid) as 最后回复日期,
table3.fd_uname as 最后回复人员名称
from table1
Left join table1 on table1.fd_pid=table2.fd_pid
and table1.fd_uid=table3.fd_uid


34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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