SQL三表关联查询问题

bjvsandy 2007-12-21 11:56:02
情况如下:

有三个表 分别是:

表一:部门 (存放部门编号 名称)
编号,名称
001,电脑部
002,财务部

表二:岗位 (存放部门编号 岗位编号 名称)
部门编号,编号,名称
001, 001,软件
001, 002,网络
001, 003,硬件
002, 001,会计
002, 002,出纳
(注意:不同部门下岗位ID是有重复的,但是同一部门下岗位ID是不会重复的)

表三:员工 (存放部门编号 岗位编号 员工编号 姓名 等信息)

部门编号,岗位编号,员工编号,姓名.....
001, 001, 123456, 比尔.盖茨

根据 "员工" 表中的 部门编号,岗位编号,员工编号 查询得出对应的 部门名称,岗位名称,员工姓名

比如得到员工ID为:123456 部门ID为 001 岗位ID为 001

我要求 把 123456 的 部门名称 岗位名称 员工姓名 查询出来

要求答案详细并简洁
...全文
403 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dobear_0922 2007-12-21
  • 打赏
  • 举报
回复
create table 部门(编号 varchar(16), 名称 varchar(32)) 
insert 部门 select '001', '电脑部'
insert 部门 select '002', '财务部'
go
create table 岗位(部门编号 varchar(16), 岗位编号 varchar(16), 名称 varchar(32))
insert 岗位 select '001', '001', '软件'
insert 岗位 select '001', '002', '网络'
insert 岗位 select '001', '003', '硬件'
insert 岗位 select '002', '001', '会计'
insert 岗位 select '002', '002', '出纳'
go
create table 员工(部门编号 varchar(16), 岗位编号 varchar(16), 员工编号 varchar(16), 姓名 varchar(32))
insert 员工 select '001', '001', '123456', '比尔.盖茨'



declare @imployeeID varchar(16)
set @imployeeID='123456'
select 部门名称=D.名称, 岗位名称=S.名称, 员工姓名=I.姓名
from 员工 I join 部门 D on I.部门编号=D.编号
join 岗位 S on I.部门编号=S.部门编号 and I.岗位编号=S.岗位编号
where 员工编号=@imployeeID

drop table 员工,部门,岗位

/*
部门名称 岗位名称 员工姓名
-------------------------------- -------------------------------- --------------------------------
电脑部 软件 比尔.盖茨

(1 row(s) affected)
*/
liangCK 2007-12-21
  • 打赏
  • 举报
回复
select a.名称 as 部门名称,b.名称 as 岗位名称,c,姓名 as 员工姓名
from 部门 a,岗位 b,员工 c
where c.员工编号='123456' and c.部门编号=b.部门编号 and c.岗位编号=b.编号 and b.编号=a.编号
dobear_0922 2007-12-21
  • 打赏
  • 举报
回复
select 部门名称=D.名称,  岗位名称=S.名称, 员工姓名=I.姓名
from 员工 I join 部门 D on I.部门编号=D.编号
join 岗位 S on I.部门编号=S.部门编号 and I.岗位编号=S.岗位编号
where 员工编号='123456'
dawugui 2007-12-21
  • 打赏
  • 举报
回复
--上面敲错了点.
--查123456
select a.名称 部门名称, b.名称 岗位名称 , c.姓名 员工姓名
from 部门 a , 岗位 b , 员工 c
where c.部门编号 = a.编号 and c.部门编号 = b.部门编号 and c.岗位编号 = b.编号 and c.员工编号 = '123456'

--查所有员工
select a.名称 部门名称, b.名称 岗位名称 , c.姓名 员工姓名
from 部门 a , 岗位 b , 员工 c
where c.部门编号 = a.编号 and c.部门编号 = b.部门编号 and c.岗位编号 = b.编号
dawugui 2007-12-21
  • 打赏
  • 举报
回复
--查123456
select a.名称 部门名称, b.名称 岗位名称 , c.姓名 员工姓名
from 部门 a , 岗位 b , 员工 c
where c.部门编号 = a.编号 and c.部门编号 = b.c.部门编号 and c.岗位编号 = b.编号 and c.员工编号 = '123456'

--查所有员工
select a.名称 部门名称, b.名称 岗位名称 , c.姓名 员工姓名
from 部门 a , 岗位 b , 员工 c
where c.部门编号 = a.编号 and c.部门编号 = b.c.部门编号 and c.岗位编号 = b.编号
dawugui 2007-12-21
  • 打赏
  • 举报
回复
select a.名称 部门名称, b.名称 岗位名称 , c.姓名 员工姓名
from 部门 a , 岗位 b , 员工 c
where c.部门编号 = a.编号 and c.部门编号 = b.c.部门编号 and c.岗位编号 = b.编号 and c.员工编号 = '123456'
dobear_0922 2007-12-21
  • 打赏
  • 举报
回复
select 部门名称=D.名称,  岗位名称=S.名称, 员工姓名=I.姓名
from 员工 I join 部门 D on I.部门编号=D.部门编号
join 岗位 S on I.部门编号=S.部门编号 and I.岗位编号=S.岗位编号
where 员工编号='123456'
bjvsandy 2007-12-21
  • 打赏
  • 举报
回复
谢谢各位大侠的出手相救! 感谢 dobear_0922(do熊)、dawugui(潇洒老乌龟)、liangCK(小梁).

以下SQL指令非常成功!再次感谢 dobear_0922(do熊)

select 部门名称=D.名称,  岗位名称=S.名称, 员工姓名=I.姓名
from 员工 I join 部门 D on I.部门编号=D.编号
join 岗位 S on I.部门编号=S.部门编号 and I.岗位编号=S.岗位编号
where 员工编号='123456'

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧