oracle 想把三张表关联起来,怎么关联?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 想把三张表关联起来,怎么关联?相关的知识,希望对你有一定的参考价值。

sysuser,usermenu,program前两张表相同字符yhdh,后两张表相同的字符cxdh,怎么关联

1、在使用where进行查询的时候,对于查询条件中的字段要指定归属表或者表别名。如下图。

2、如果改为using进行查询的话那就不用指定表别名,using关键字的使用规则就是等值连接而且连接的字段名称和字段类型必须要一致。

3、如果在使用了using关键字进行查询的时候如果添加了表的别名或者是表名,则直接会报如下错误,对于using关键字指定的列名 在查询中是不能使用表名或者表别名的。

4、并且还有一点需要注意的是using后只能接字段名不能使用 大于  等于  小于等符号进行比对。

参考技术A left join 或者 right join
select * from usermenu
left join sysuser on sysuser.yhdh=usermenu.yhdh
left join program on program.cxdh=usermenu.cxdh
只有这样关联的数据才会处在一行。
参考技术B WHERE条件里写
sysuser.yhdh=usermenu.yhdh and usermenu.cxdh=program.cxdh
例如:
select * from sysuser,usermenu,program
where sysuser.yhdh=usermenu.yhdh and usermenu.cxdh=program.cxdh
这样三张表就关联了。本回答被提问者采纳
参考技术C WHERE sysuser.yhdh=usermenu.yhdh and usermenu.cxdh=program.cxdh 参考技术D SELECT *---可以换成你想要的字段
FROM sysuser S,
usermenu U ,
program P
WHERE S.yhdh= U.yhdh
AND U.cxdh = P .cxdh;

这样应该就没问题了!试试吧!呵呵!

oracle通过两张表更新一张表

有ABC三张表,A表T数据空,需要将BC表中的T数据根据id更新过去,两次update之后发现第一次更新的都变成空的了

参考技术A

到底用b还是c来更新?或者有什么关系?

给你写一个用B更新A的吧:

update A set t = (select T from B where a.id = b.id)
where exists (select 1 from B where a.id = b.id and b.T is not null);

追问

用B和C更新A,但是我分开更新发现,第二次更新将第一次的刷没了

追答

where很关键的;
oracle的用其它表更新中没有sqlserver的update from 的语法,用上面的语法where一定要写对。

参考技术B 先把BC两表数据整合一下,create view V_BC select B.T,B.ID, FROM B UNION SELECT C.T,C.ID FROM C.追问

提示缺少关键字

追答

B.ID后面多了个逗号

追问

少了个as,我已经做好啦,谢谢

本回答被提问者采纳
参考技术C 更新一张表

以上是关于oracle 想把三张表关联起来,怎么关联?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle两张表关联中间表查询,那张关联到数据就显示,关联不到就负空值

ORACLE中如何多表关联查询。如有A、B、C三张表,A表字段a和B表字段b以及C表字段c关联,写出查询语句

关于oracle 多表关联更新的问题

mysql 3张表关联批量更新

sql两张表(主表和字典表)关联查询,字典项翻译问题

MYSQL中两张表,怎么使用关联查询?