select (select 工号,姓名 from 表A where 工号 = 'A01'),
(select 工号,姓名 from 表A,表B
where 表B.工号 = 'A01' and 表A.工号=表B.上级员工工号),
(select 工号,姓名 from 表A,表B
where 表B.工号 = 'A01' and 表A.工号=表B.下级员工工号)
(select 工号,姓名 from 表A,表B
where 表B.工号 = 'A01' and 表A.工号=表B.上级员工工号),
(select 工号,姓名 from 表A,表B
where 表B.工号 = 'A01' and 表A.工号=表B.下级员工工号)
解决方案 »
- 如何在SELECT语句中动态生成某一字段的别名
- 求一个acc数据库的sql查询语句,置顶和非置顶的
- 大家推荐点进阶的书吧~~~~
- SQLSERVER2005里面,如何用SQL语句查询某个作业指定时间内前N次执行的执行结果?
- 求一个sql语句查询条件怎么来写
- sql server 怎么通过日志恢复误删除的数据
- 关于数据复制~~~
- 我使用T-SQL 想将查询ACCESS库中的表,或是从SQL中导出到ACCESS 可是总报验证失败,请大家看看!
- 速度有点慢,这样的sql怎么优化
- 请问:如何在sql server中存取图片文件,急!
- 如何通过存储过程实现远程导入导出EXCEL???
- [困惑]关于误删数据的恢复问题
表A是基本表,显示员工工号和姓名
表B应该叫上下级关系表,存放一个员工的工号,所属上级的工号,所属下级的工号
我现在要求是显示
把一个员工工的工号和姓名,和他所属的上下级的工号和姓名同时显示出来,(其中,上下级工号和表A里的员工工号是对应的)
结果显示的格式
工号 姓名
111 a (本人)
222 b
表A是基本表,显示员工工号和姓名
表B应该叫上下级关系表,存放一个员工的工号,所属上级的工号,所属下级的工号
我现在要求是显示
把一个员工工的工号和姓名,和他所属的上下级的工号和姓名同时显示出来,(其中,上下级工号和表A里的员工工号是对应的)
结果显示的格式
-----------
工号 姓名
111 a (本人)
222 b (上级)
333 C (下级)
select
temp1.工号,temp1.姓名,
temp2.工号 as 上级员工工号,temp2.姓名 as 上级员工姓名,
temp3.工号 as 下级员工工号,temp3.姓名 as 下级员工姓名
from
(select 工号,姓名 from 表A where 工号 = 'A01') temp1,
(select 表A.工号,表A.姓名 from 表A,表B
where 表B.工号 = 'A01' and 表A.工号=表B.上级员工工号) temp2,
(select 表A.工号,表A.姓名 from 表A,表B
where 表B.工号 = 'A01' and 表A.工号=表B.下级员工工号) temp3
select 表A.* from 表A,表B
where 表A.工号 = 'A01'
or
(表A.工号 = 表B.上级员工工号)
or
(表A.工号 = 表B.下级员工工号)
你怎么确定你的显示是工号 姓名
111 a (本人)
222 b (上级)
333 C (下级)呢?保不准就成了工号 姓名
222 b (上级)
111 a (本人)
333 C (下级)
select 表A.* from 表A,表B
where 表A.工号 = 'A01'
union
select 表A.* from 表A,表B
表A.工号 = 表B.上级员工工号
union
select 表A.* from 表A,表B
表A.工号 = 表B.下级员工工号
left join t1 c on b.上级员工工号=c.工号
left join t1 d on b.下级员工工号=d.工号
select 表A.* from 表A
where 表A.工号 = 'A01'
union
select 表A.* from 表A
where
表A.工号 = (select 表B.上级员工工号 from B where B.工号= 'A01')
union
select 表A.* from 表A
where
表A.工号 = (select 表B.下级员工工号 from B where B.工号= 'A01')
这个应该差不多
select 工号,姓名 from A where 工号='A01' or 工号=(select 上级的工号 from B where 工号='A01') or 工号=(select 下级的工号 from B where 工号='A01')