您的位置:程序门 -> ms-sql server -> 基础类



一条sql语句读取两个分类表~


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


一条sql语句读取两个分类表~
发表于:2008-01-21 11:38:45 楼主
两个表,表a,表b

表a结构
bigclassid         bigclass
1                           台式机
2                           笔记本
3                           服务器
.                           .
.                           .

表b结构
smallclassid     smallclass       bigclassid      
1                           联想                       1
2                           清华同方               1
3                           ibm                     3
4                           明基                       2
5                           华硕                       1
6                           三星                       2
7                           索尼                       2
8                           富士通                   2
9                           浪潮                       3
10                         强氧                       3
.                           .                         .
.                           .                         .
                         
能否用一条sql语句读取两个分类表,如何做?若不能,有什么最好的解决办法?读取速度越快越好!万分谢谢!
读取结果如下:
台式机             联想  
                        清华同方  
                        华硕

笔记本             明基
                        三星
                        索尼
                        富士通  
               
服务器             ibm
                      浪潮
                        强氧
.                     .
.                     .
发表于:2008-01-21 11:40:401楼 得分:0
直接用bigclassid   连不就行了?
发表于:2008-01-21 11:44:122楼 得分:0
sql code
select bigclass = case when existsselect 1 from 表b b0 where b0.bigclassid=b.bigclassid and b0.smallclassid<b.smallclass) then bigclass else '' end , smallclass from 表b b join 表a a on a.bigclassid=b.bigclassid order by a.bigclassid, smallclass
发表于:2008-01-21 11:53:393楼 得分:0
sql code
create table a(bigclassid int,bigclass varchar10)) insert into a values1, '台式机') insert into a values2, '笔记本') insert into a values3, '服务器') create table b(smallclassid int,smallclass varchar10),bigclassid int) insert into b values1 , '联想' , 1 ) insert into b values2 , '清华同方', 1 ) insert into b values3 , 'ibm' , 3 ) insert into b values4 , '明基' , 2) insert into b values5 , '华硕' , 1 ) insert into b values6 , '三星' , 2 ) insert into b values7 , '索尼' , 2 ) insert into b values8 , '富士通' , 2 ) insert into b values9 , '浪潮' , 3) insert into b values10, '强氧' , 3 ) go select a.bigclass,b.smallclass from a,b where a.bigclassid = b.bigclassid order by a.bigclassid /* bigclass smallclass ---------- ---------- 台式机 联想 台式机 清华同方 台式机 华硕 笔记本 三星 笔记本 索尼 笔记本 富士通 笔记本 明基 服务器 ibm 服务器 浪潮 服务器 强氧 (所影响的行数为 10 行) */ select case when b.smallclassid=select min(smallclassid) from b where bigclassid=a.bigclassid) then a.bigclass else '' end as bigclass , b.smallclass from a,b where a.bigclassid = b.bigclassid order by a.bigclassid , b.smallclassid /* bigclass smallclass ---------- ---------- 台式机 联想 清华同方 华硕 笔记本 明基 三星 索尼 富士通 服务器 ibm 浪潮 强氧 (所影响的行数为 10 行) */ drop table a,b
发表于:2008-01-21 11:55:354楼 得分:0
sql code
select bigclass = case when not existsselect 1 from 表 b where bigclassid=b.bigclassid and smallclassid<b.smallclassid) then a.bigclass else '' end, smallclass from 表b b left join 表a a on a.bigclassid=b.bigclassid order by bigclassid
发表于:2008-01-21 11:57:505楼 得分:0
sql code
修改下: select bigclass = case when not existsselect 1 from 表b where bigclassid=b.bigclassid and smallclassid<b.smallclassid) then a.bigclass else '' end, smallclass from 表b b left join 表a a on a.bigclassid=b.bigclassid order by b.bigclassid,b.smallclassid
发表于:2008-01-21 14:11:156楼 得分:0
drop   table   #a
drop   table   #b
create   table   #a(bigclassid   int,bigclass   varchar(50))
insert   #a
select   1,'台式机'
union   select   2,'笔记本'
union   select   3,'服务器'
create   table   #b(smallclassid   int,smallclass   varchar(50),bigclassid   int)
insert   into   #b
select   1   ,   '清华同方',1  
union   select   2   ,   '联想',1  
union   select   3,'ibm',3
union   select   4,'明基',2
union   select   5,'华硕',1
union   select   62,'三星',2

select   a.bigclass,b.smallclass   from   #a   a,#b   b   where   a.bigclassid=b.bigclassid   order   by   a.bigclassid
发表于:2008-01-21 15:12:577楼 得分:0
碰到老乌龟的东西既要收藏啊!


快速检索

最新资讯
热门点击