2016-11-26 2 views
1

他(その逆)に1列が含まれるようにテーブルの結合これらは私のサンプル表、列およびレコードです...

OracleのSQL -

Table:   tbl1 
     ----------------------- 
Columns: ID | DEPT | WK | MANHRS 
Records: 01 A  1  8 
     02 A  2  2 

Table: tbl2 
-------------------------------- 
Columns: ID | DEPT | WK | WAGES 
Records: 01  A 1  3 
     02  A 2  5 

シナリオ:私はしたい
2つのテーブルが結合され、MANHRSカラムとWAGESカラムが両方とも結果セットに含まれるという結果を得ることができます。

Expected output of the result table: 
Columns: ID | DEPT | WK | MANHRS | WAGES 
      01 A  1 8   3 
      02 A  2 2   5 


私は、UNIONを試みたが、私の予想結果を取得できませんでした。 :(これを行う方法を

+0

ヒント: 'JOIN'。何の問題がありますか?何を試しましたか? –

+0

私はUNIONを試しましたが、私の期待した結果は得られませんでした。 : – boombox2014

+0

'JOIN'でもう一度やり直して質問に答えてください(あなたは質問を編集できます) –

答えて

1

クエリを記述する適切な方法は次のとおりです。

SELECT t1.*, t2.WAGES 
FROM tbl1 t1 JOIN 
    tbl2 t2 
    ON t1.DEPT = t2.DEPT and t1.WK = t2.WK; 

注:

  • FROM句にカンマを使用してください。 常には、適切で明示的なJOIN構文を使用します。
  • IDJOINの条件になる必要があるかどうかわかりません。
  • 両方のテーブルのすべての行が欲しいが、一部が欠落している場合は、FULL JOINを使用します。

あなたはUSING句でクエリを書くことができます:あなたはFULL JOINを使用している場合

SELECT ID, DEPT, WK, t1.MANHRS, t2.WAGES 
FROM tbl1 t1 JOIN 
    tbl2 t2 
    USING (ID, DEPT, WK); 

これは特に便利です。

+0

ありがとうございます!私は '正しい結合構文'に注意します。結合する際にはカンマを使用し、where節にはキーを使用します。また、左右の結合にも(+)を使用しました。 – boombox2014

+0

@ boombox2014。。。私はその文書が非常に明確であると思います。「オラクルは、Oracle結合演算子ではなくFROM句OUTER JOIN構文を使用することをお勧めします。」(https ://docs.oracle.com/database/121/SQLRF/queries006.htm#SQLRF52353) –

0

あなたはDEPTとWKで参加すべきであると仮定すると:?

SELECT t1.*, t2.WAGES 
FROM tbl1 t1, tbl2 t2 
where t1.DEPT = t2.DEPT and t1.WK = t2.WK 
+0

古き良さの' JOIN'構文で質問に答えないでください! –