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

初学SQL就是不知道如何弄了,请问

2012-12-22 
初学SQL就是不知道怎么弄了,请教如例子idnametypeidpantid1蔬菜水果0-12蔬菜013西红柿024小黄瓜125大黄瓜0

初学SQL就是不知道怎么弄了,请教
如例子


id   name     typeid  pantid
1    蔬菜水果   0      -1
2    蔬菜       0       1
3    西红柿     0       2
4    小黄瓜     1       2
5    大黄瓜     0       2
6    烂黄瓜     1       2
7    水果       0       1
8    葡萄       1       7
9    鸭梨       0       7
10   苹果       1       7
11    桃        0       7

蔬菜或者水果的下一级节点只能是typeid=1的
结果
ID    name     typeid
2     蔬菜      0
4    小黄瓜     1       
6    烂黄瓜     1  
7    水果       0
10   苹果       1    


请教
[最优解释]
select * from tb 
where name in ('蔬菜','水果')
or  
(pantid in (select  typeid from tb where name in ('蔬菜','水果')) and typeid=1)

[其他解释]
按楼主需求,葡萄也应该显示出来。
用2楼SSP的代码即可。
[其他解释]

select id,name typeid from tb where pantid=1 and typeid=1 ;

[其他解释]
2楼的和6楼的都正确,貌似6楼得简单2楼的全面
[其他解释]
select ID,name,typeid
from tb
where pantid in (2,7) and typeid=1

貌似描述和结果不符
[其他解释]
;with cte as
(
   select id  ,name,    typeid from tb where pantid=1
   union all
   select a.id,a.name,a.typeid from tb a join cte b on a.pantid=b.id
         where a.typeid=1
)

select * from cte
[其他解释]
看不懂,重新描述下。

热点排行
Bad Request.