求一条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

研究了半天了,万般无奈求助,望大家帮忙
...全文
186 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,838

社区成员

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

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