关于SQL语句问题?(50分)

  • 主题发起人 主题发起人 yanb
  • 开始时间 开始时间
Y

yanb

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一张表其字段结构如下:
DEPT_NO DEPT_NAME DEPT_RANK DEPT_OWNED
1 内科 1 1
2 消化科 2 1
3 心脏科 2 1
4 心电图 3 3
5 胃镜室 3 3
6 外科 1 6
7 普外科 2 6
8 手术室 3 7

DEPT_NO: 科室号(PK)
DEPT_RANK:科室级别 (有1,2,3级)
DEPT_OWNED:所属科室

现要求用一条SQL写出所有一级科室
有关的二、三级科室(不包括一级科室)
 
列出所有一级科室:
select *
from table1
where table1.DEPT_RANK=1

列出所有二,三级科室:
select *
from table1
where table1.DEPT_RANK<>1

 
>现要求用一条SQL写出所有一级科室有关的二、三级科室
select * from table1 where DEPT_RANK<>1 不就行了.
 
注意与一级科室有关。
select * from table1 where (DEPT_RANK<>1) and (DEPT_OWNED=1);
我的理解是否有误?
 
发出去就发现没写对, 应为:
select * from table1 where (((DEPT_RANK=2) or (DEPT_RANK=3)) and (DEPT_OWNED=1)) or (DEPT_RANK=1);
 
datoncg ,理解我的意思
要查询出所有与一级科室有关的二、三级科室,不包括一级科室本身。
eg:
1 内科 1 1(为一级,不要求查出)
2 消化科 2 1}
3 心脏科 2 1}(为二级科室,直接相关)
4 心电图 3 3} (为三级科室,间接相关)
5 胃镜室 3 3}
 
select * from table1 were dept_bank<>1 and dept_ownder=1
 
表中的科室与一级科室不是直接相关就是间接相关,直接
select * from table1 where DEPT_RANK<>1 不行吗?
 
select DEPT_NO,DEPT_NAME,DEPT_RANK,DEPT_OWNED from table1
where (DEPT_RANK = 2 and DEPT_OWNED = 1)
or (DEPT_RANK = 3 and DEPT_OWNED in (select DEPT_NO from table1 where DEPT_RANK = 2 and DEPT_OWNED = 1))

准能行,不行找我
 
接受答案了.
 
后退
顶部