在写SQL语句时什么时候需要用到自表关联,谁能举个完整的例子?
2个回答
展开全部
以前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
这里可以使用一个自身连接来描述员工向谁汇报工作的情况
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |