如何使用Oracle DB中的第3个表连接两个表

时间:2016-07-05 12:55:01

标签: oracle

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

有3个表(和列):

public class RunScript extends Thread {

@Override
public void run() {
    try {
        File file = new File("D:\\jacob-1.18-x86.dll");
        System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
        AutoItX autoIt = new AutoItX();
        Thread.sleep(2000);
        autoIt.winActivate("yourWindowName", "");
        autoIt.winWaitActive("yourWindowName");
        if (autoIt.winExists("yourWindowName")) {
            autoIt.send("username{TAB}", false);
            autoIt.send("password{Enter}", false);
            }
        }
    } catch (InterruptedException ex) {
        //
    }
}
}

架构是:user (user_key, user_name) roles (roles_key, role_name) junction (roles_key, user_key)

我可以将查询编写为internal_schema

如何加入这些表格,以便获得select * from internal_schema.user;user_name

3 个答案:

答案 0 :(得分:0)

类似的东西:

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)

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

答案 1 :(得分:0)

有点快,又脏,但应该解决问题。 ; - )

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

答案 2 :(得分:0)

您可以为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;