oracle菜鸟学习之 自连接查询实验
表字段说明:
id:员工编号
name:员工名字
ano:管理人员编号
create table admin(id varchar2(4),name varchar2(10),ano varchar2(4));insert into admin values('001','XiongDa','004');insert into admin values('002','XiongEr','004');insert into admin values('003','ZhangSan','003');insert into admin values('004','ZhaoSi','004');
查看表
SQL> select * from admin;ID NAME ANO------------ ------------------------------ ------------001 XiongDa 004002 XiongEr 004003 ZhangSan 003004 ZhaoSi 004SQL>
问题
通过查询admin表,显示编号、姓名、管理人员姓名信息
实验步骤主要思路:怎么找出ano对应的名字
id和ano的对应关系
当我们查询两张表的时候,实际上两张表的所有行都会交叉链接
SQL> select * from admin a ,admin b;ID NAME ANO ID NAME ANO------------ ------------------------------ ------------ ------------ ------------------------------ ------------001 XiongDa 004 001 XiongDa 004001 XiongDa 004 002 XiongEr 004001 XiongDa 004 003 ZhangSan 003001 XiongDa 004 004 ZhaoSi 004002 XiongEr 004 001 XiongDa 004002 XiongEr 004 002 XiongEr 004002 XiongEr 004 003 ZhangSan 003002 XiongEr 004 004 ZhaoSi 004003 ZhangSan 003 001 XiongDa 004003 ZhangSan 003 002 XiongEr 004003 ZhangSan 003 003 ZhangSan 003003 ZhangSan 003 004 ZhaoSi 004004 ZhaoSi 004 001 XiongDa 004004 ZhaoSi 004 002 XiongEr 004004 ZhaoSi 004 003 ZhangSan 003004 ZhaoSi 004 004 ZhaoSi 00416 rows selected.
通过人眼可以看得出我们需要的数据,只要将第二个表的name写在第一个表的ano即可得出我们想要的信息
001 XiongDa 004 004 ZhaoSi 004002 XiongEr 004 004 ZhaoSi 004003 ZhangSan 003 003 ZhangSan 003004 ZhaoSi 004 004 ZhaoSi 004
通过上面的结果找对应关系,发现只要ano=id,那么就能得出结果
SQL> select a.id,a.name,b.name as aname from admin a ,admin b where a.ano=b.id;ID NAME ANAME------------ ------------------------------ ------------------------------003 ZhangSan ZhangSan004 ZhaoSi ZhaoSi002 XiongEr ZhaoSi001 XiongDa ZhaoSiSQL>
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。