oracle菜鸟学习之 自连接查询实验

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                004
002      XiongEr                004
003      ZhangSan               003
004      ZhaoSi             004

SQL> 

问题

通过查询admin表,显示编号、姓名、管理人员姓名信息

实验步骤

主要思路:怎么找出ano对应的名字
id和ano的对应关系

当我们查询两张表的时候,实际上两张表的所有行都会交叉链接

SQL> select * from admin a ,admin b;

ID       NAME               ANO      ID       NAME               ANO
------------ ------------------------------ ------------ ------------ ------------------------------ ------------
001      XiongDa                004      001          XiongDa                004
001      XiongDa                004      002          XiongEr                004
001      XiongDa                004      003          ZhangSan               003
001      XiongDa                004      004          ZhaoSi                 004
002      XiongEr                004      001          XiongDa                004
002      XiongEr                004      002          XiongEr                004
002      XiongEr                004      003          ZhangSan               003
002      XiongEr                004      004          ZhaoSi                 004
003      ZhangSan               003      001          XiongDa                004
003      ZhangSan               003      002          XiongEr                004
003      ZhangSan               003      003          ZhangSan               003
003      ZhangSan               003      004          ZhaoSi                 004
004      ZhaoSi             004      001          XiongDa                004
004      ZhaoSi             004      002          XiongEr                004
004      ZhaoSi             004      003          ZhangSan               003
004      ZhaoSi             004      004          ZhaoSi                 004

16 rows selected.

通过人眼可以看得出我们需要的数据,只要将第二个表的name写在第一个表的ano即可得出我们想要的信息

001      XiongDa                004      004          ZhaoSi                 004
002      XiongEr                004      004          ZhaoSi                 004
003      ZhangSan               003      003          ZhangSan               003
004      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               ZhangSan
004      ZhaoSi             ZhaoSi
002      XiongEr                ZhaoSi
001      XiongDa                ZhaoSi

SQL> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值