请教大家一个联合查询的问题。谢谢

ihyinger 2005-07-14 09:24:03
数据库是access,有两个表如下:
其中表一的songid和表二的songid是关联的。表一是主表。表二是一个统计表。
我需要用一条sql查询出这样几列:
songid,songname,songer,company,每个songid在表二的count()

但表一中所有的songid并不一定在表二中全有。没有的要显示0,有的要显示count()的数。
我写了写还是没有写出来。请教一下大家。谢谢。



表一:
songid songname songer company
1 a a a
2 b b b
3 c c c
4 d d d
5 e e e
6 f f f

表二:
userid songid
user1 3
user1 4
user2 3
user2 5

...全文
64 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivianfdlpw 2005-07-14
  • 打赏
  • 举报
回复
--创建测试环境
create table tb1
(
songid int,songname varchar(10),songer varchar(20),company varchar(10)
)
create table tb2
(
userid varchar(10),songid int
)
insert tb1
select 1,'a','a','a' union
select 2,'b','b','b' union
select 3,'c','c','c' union
select 4,'d','d','d' union
select 5,'e','e','e' union
select 6,'f','f','f'
insert tb2
select 'user1',3 union
select 'user1',4 union
select 'user2',3 union
select 'user2',5

--测试
select tb1.*,[count]=isnull(B.count,0)
from tb1
left join (select songid,[count]=count(1) from tb2 group by songid)B
on tb1.songid=B.songid

--删除测试环境
drop table tb1,tb2

--结果
/*


songid songname songer company count
----------- ---------- -------------------- ---------- -----------
1 a a a 0
2 b b b 0
3 c c c 2
4 d d d 1
5 e e e 1
6 f f f 0

(所影响的行数为 6 行)
*/

34,590

社区成员

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

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