我在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_name
和roles_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;