我现在有两个表,一个是上传表里面记录的是上传的文档,另一个表是下载记录表主要记录的是下载的明细,现在我想用一句话查询出所有上传的文档的下载量
- SQL code
上传表id 名称 上传路径 上传者 文档类型22 WBS模板.pdf Manage\file\2012-05-15\17-40-43.pdf 20080962 pdf23 5月通讯录.pdf Manage\file\2012-05-16\08-36-10.pdf 20080962 pdf24 香水.pdf Manage\file\2012-05-16\08-47-10.pdf 20080962 pdf下载表id 名称 时间 下载者 1 WBS模板.pdf 2012-05-18 200807902 WBS模板.pdf 2012-05-18 20080962
------解决方案--------------------
- SQL code
select a.名称, 下载次数 = count(*) from 上传表 aleft join 下载表 b on a.名称 = b.名称 -- 这个关联条件lz自己斟酌一下group by a.名称
------解决方案--------------------
- SQL code
select a.*, 下载次数 = b.fcfrom 上传表 aleft join (select id,count(*) fc from 下载表 group by id) b on a.id = b.idorder by a.名称
------解决方案--------------------
- SQL code
if object_id('[上传表]') is not null drop table [上传表]gocreate table [上传表] (id int,名称 nvarchar(18),上传路径 nvarchar(70),上传者 int,文档类型 nvarchar(6))insert into [上传表]select 22,'WBS模板.pdf','Manage\file\2012-05-15\17-40-43.pdf',20080962,'pdf' union allselect 23,'5月通讯录.pdf','Manage\file\2012-05-16\08-36-10.pdf',20080962,'pdf' union allselect 24,'香水.pdf','Manage\file\2012-05-16\08-47-10.pdf',20080962,'pdf'if object_id('[下载表]') is not null drop table [下载表]gocreate table [下载表] (id int,名称 nvarchar(18),时间 datetime,下载者 int)insert into [下载表]select 1,'WBS模板.pdf','2012-05-18',20080790 union allselect 2,'WBS模板.pdf','2012-05-18',20080962select * from [上传表]select * from [下载表]SELECT A.id,A.名称,A.上传路径,A.上传者,A.文档类型,COUNT(B.id) AS '下载次数'FROM [上传表] ALEFT JOIN [下载表] B ON A.名称 = B.名称GROUP by A.id,A.名称,A.上传路径,A.上传者,A.文档类型/*id 名称 上传路径 上传者 文档类型 下载次数----------- ------------------ ---------------------------------- ----------- ------ -----------22 WBS模板.pdf Manage\file\2012-05-15\17-40-43.pdf 20080962 pdf 223 5月通讯录.pdf Manage\file\2012-05-16\08-36-10.pdf 20080962 pdf 024 香水.pdf Manage\file\2012-05-16\08-47-10.pdf 20080962 pdf 0(3 row(s) affected)*/