首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

select解决思路

2012-03-05 
select表一aidmyidfidgroupid11841760表二bidgroupnamemyid1同学184我现在想得到的结果groupnamenumb.id默

select
表一   a
id             myid               fid           groupid
11841760

表二   b
id             groupname         myid
1                 同学                   184
我现在想得到的结果
groupname     num   b.id
默认分组         1       0
同学                 0       1

这样的查询怎么写?

[解决办法]
数据太少了,根本不知道你的1哪来的
请说明下
[解决办法]
不明白楼主的意思
[解决办法]
你得说清楚些!
[解决办法]
那你第2条纪录怎么来的了
说下每个字段是怎么得到的


请多给点数据!
[解决办法]
看到头痛......?数据什么来的?
[解决办法]
?
[解决办法]
create table c (id tinyint identity(1,1),myid tinyint,fid tinyint,groupid tinyint)
create table d (id tinyint identity(1,1),groupname varchar(10),myid tinyint)
go
insert c values(184,176,0)
insert c values(184,10,1)
insert c values(184,11,1)
insert c values(184,12,2)
insert c values(184,22,2)
insert c values(184,44,0)
go
insert d values( '同学 ',184)
insert d values( '同乡 ',184)
go
select isnull(d.groupname, '默认分组 ') groupname,count(*) num
from c left join d on c.groupid=d.id
group by d.groupname
返回:
groupname num
---------- -----------
默认分组 2
同乡 2
同学 2

(所影响的行数为 3 行)
[解决办法]
还是上面的例子代码:
在原来的基础上再加上一条:
insert d values( '合作 ',184)
go
-----------------------------
select isnull(groupname, '默认分组 ') groupname,count(*) num
from c left join d on c.groupid=d.id
group by groupname
union all
select groupname, '0 ' num
from d
where id in (select d.id
from c right join d on c.groupid=d.id
where c.groupid is null)
group by groupname
返回:
groupname num
---------- -----------
默认分组 2
同乡 2
同学 2
合作 0

(所影响的行数为 4 行)

热点排行