2016-07-05 11 views
0

私はスキーマ名を使用しているOracle DBでSQLクエリを実行しています。Oracle DBの3番目のテーブルを使用して2つのテーブルを結合する方法

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

スキーマは次のとおりです:internal_schema

私は私が得るように、私はこれらのテーブルを結合するにはどうすればよいselect * from internal_schema.user;

としてクエリを書くことができます

は、3つのテーブル(および列)がありますuser_nameおよびroles_name。そのような

答えて

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) 

ものの、スキーマ名は必要ありません。

+0

ありがとうございます。投稿している間に間違いをしてしまったので、列名を変更してから、結果が得られました。 – Aish

+0

クエリが有効と思われますが、正しく実行されていますか? –

+0

はい、正しく動作します。ジョインを使用する場合、Oracle DBにスキーマ名を追加する方法を知りたい。私はMS SQL DBのためにそれを知っている、オラクルについてはよく分からなかった。 – Aish

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 
+0

ああ、テーブル名の前にスキーマがないことが原因です:fa_oim ...すばやく汚いアプローチで忘れました – Tyron78

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台のためにこれを行うことができなく、1つで十分でしょう参加

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

@Aish本当にこれらの3つのテーブルがあるかどうか確認してください。あなたがそれらを持っている場合は、あなたがそれらにアクセスできるかどうかを確認してください – SriniV

関連する問題