日期:2014-05-17  浏览次数:20886 次

主从表数据查询

表A:
ID    Name    分类   启用
1    name1    null    0
2    name2    null    0
3    name3    null    0
4    name4    分类1   1
5    name5    null    0
6    name6    null    0
7    name7    分类3   1
8    name8    null    0
9    name9    分类2   1
10   name10   null    0


表B:
ID   分类        分类名称 
1    分类1     分类名称1-1
2    分类1     分类名称1-2
3    分类1     分类名称1-3
4    分类2     分类名称2-1
5    分类2     分类名称2-2
6    分类3     分类名称3-1
7    分类3     分类名称3-2
8    分类3     分类名称3-3

当表A中有分类,同时启用=1时,查询表B相应的分类信息,显示分类名称;
(假如表A中的分类值是动态分配的,又如何去做呢?写游标?)

 得到结果:
ID Name       
1 name1
2 name2
3 name3
4 分类名称1-1
5 分类名称1-2
6 分类名称1-3
7 name5
8 name6
9 分类名称3-1
10 分类名称3-2
11 分类名称3-3
12 name8
13 分类名称2-1
14 分类名称2-2
15 name10

------解决方案--------------------

with tb(ID,Name,分类,启用)as(
select 1,'name1',null,0 union
select 2,'name2',null,0 union
select 3,'name3',null,0 union
select 4,'name4','分类1',1 union
select 5,'name5',null,0 union
select 6,'name6',null,0 union
select 7,'name7','分类3',1 union
select 8,'name8',null,0 union