在写SQL语句时什么时候需要用到自表关联,谁能举个完整的例子?

 我来答
hotyxm
2010-07-07 · TA获得超过1028个赞
知道大有可为答主
回答量:1698
采纳率:50%
帮助的人:1179万
展开全部
比如公司的部门结构,
人事部门,他的下级 考勤科,数据存储在一个表中
org_code = 考勤科, up_org_code = 人事部门
,表名是人事 表,我需要查询人事的上下级部门关系,则需要

select B.org_code, A.org_code
from 人事表 A, 人事表 B
where A.up_org_code = b.org_code
;

结果就是 人事部门 -> 考勤科
明白了吗?
yjx_xiaoxin
2010-07-07 · TA获得超过6702个赞
知道大有可为答主
回答量:4618
采纳率:50%
帮助的人:2466万
展开全部
以前SQL Server有一个示例数据库northwind,该数据库中包含一个员工信息表employees,其中每个员工的信息包括employeeid,firstname,lastname,reportsto等,其中reportsto表示员工向哪个领导汇报工作。
这里可以使用一个自身连接来描述员工向谁汇报工作的情况
select t1.lastname+t1.firstname as 姓名,
'向',t2.lastname+t2.firstname,
'汇报工作'
from employees t1 join employees t2
on t1.reportsto=t2.employeeid
得到的结果如下所示:
姓名
------------------------------ ---- ------------------------------ --------
DavolioNancy 向 FullerAndrew 汇报工作
LeverlingJanet 向 FullerAndrew 汇报工作
PeacockMargaret 向 FullerAndrew 汇报工作
BuchananSteven 向 FullerAndrew 汇报工作
SuyamaMichael 向 BuchananSteven 汇报工作
KingRobert 向 BuchananSteven 汇报工作
CallahanLaura 向 FullerAndrew 汇报工作
DodsworthAnne 向 BuchananSteven 汇报工作
Oracle数据库里也有一个emp表,与此类似
emp表包括字段:员工号empno,姓名ename,经理是谁mgr
执行以下sql语句:
select e1.ename,'works for',e2.ename from scott.emp e1,scott.emp e2 where e1.mgr=e2.empno;
结果:
ENAME 'WORKSFOR ENAME
---------- --------- ----------
SCOTT works for JONES
FORD works for JONES
ALLEN works for BLAKE
WARD works for BLAKE
JAMES works for BLAKE
TURNER works for BLAKE
MARTIN works for BLAKE
MILLER works for CLARK
ADAMS works for SCOTT
JONES works for KING
CLARK works for KING
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式