如何在 Oracle DB 中使用第三个表连接两个表



我在Oracle DB中运行SQL查询,我正在使用模式名称。

有 3 个表(和列):

user (user_key, user_name)
roles (roles_key, role_name)
junction (roles_key, user_key)

架构为:internal_schema

我可以编写查询作为select * from internal_schema.user;

怎样才能加入这些表,以便我得到user_nameroles_name.

类似的东西:

SELECT fa_oim.usr.usr_display_name, fa_oim.usg.usg_display_name
  FROM fa_oim.usr INNER JOIN fa_oim.usg USING (usr_key)
                  INNER JOIN fa_oim.ugp USING (ugp_key)

但是,如果从同一架构运行查询,则不需要架构名称。

有点快和肮脏,但应该解决问题。

SELECT a.usr_display_name, c.usg_display_name
  FROM usr a, usg b, ugp c
  WHERE b.usr_key = a.usr_key
    AND b.ugp_key = c.ugp_key

您可以对 3 个表连接执行此操作

SELECT a.usr_display_name, c.usg_display_name
  FROM usr a INNER JOIN usg b ON a.usr_key = b.ugp_key
           INNER JOIN ugp c ON b.ugp_key = c.ugp_key;

但是对于表定义,您不需要执行 3 路连接,而是单个连接就足够了

SELECT a.usr_display_name, c.usg_display_name
  FROM usr a INNER JOIN usg c ON a.usr_key = c.ugp_key;

最新更新