2017-05-03 18 views
0


2つの異なるテーブルのデータを照合する際に問題があります。表1に行が表2の行と一致する場合はTABLE1のコルA、D、表2のCOL AとE、D、条件に電子 のデータと一致する方法2つのテーブルのデータを照合して比較する

table1: a,b,c,d,e (col) 
table2: a,d,e,f,g (col) 

その後、ループを停止しますか?

私のスクリプトの結果では、常にデータを一致させながら(テーブル1のデータがテーブル2の他のデータとロックされていない静止ループと一致したときに)重複します。データサンプル

select distinct x.a, y.a, x.d, y.d, x.e, y.e 
from table1 x, 
    table2 y 
where x.a = y.a(+) and x.d = y.d(+) and x.e = y.e(+) 


...

TABLE1

col a--b--c--d--e 
'Ryan'--'Sofia'--'Bulgaria'--'January'--'107' 
'Dony'--'Vienna'--'Austria'--'March'--'103' 
'Ryan'--'Berlin'--'Germany'--'January'--'107' 
'Dony'--'Milan'--'Italy'--'March'--'103' 

table2の

col a--d--e--f--g 
'Ryan'--'January'--'107'--'Travel'--'5' 
'Ryan'--'January'--'107'--'Bussiness'--'4' 
'Dony'--'March'--'103'--'Bussiness'--'9' 
'Dony'--'March'--'103'--'Bussiness'--'3' 



クエリ

select distinct x.a, y.a, x.d, y.d, x.e, y.e 
from table1 x, 
    table2 y 
where x.a = y.a(+) and x.d = y.d(+) and x.e = y.e(+) 


結果は、表2の1st_rowと一致する表2の3rd_row
TABLE1 3rd_row(一致が重複)
TABLE1 4th_rowと一致する表2の1st_row
TABLE1 2nd_rowと一致

TABLE1 1st_rowあります第2テーブルとマッチしました3rd_row(重複一致)


が、私はどのように理解しない3rd_row
TABLE1テーブル2の4th_row

に合わせたテーブル2の2nd_row
TABLE1 4th_rowと一致3rd_row必要な結果は表2に合わせたテーブル2の1st_row
TABLE1 2nd_rowと一致

TABLE1 1st_rowですプロシージャまたはケースを使用する
この問題を解決するお手伝いをしてください...ありがとう

+0

あなたの書式を修正し、使用しているデータベースを教えてください。また、古典的な結合構文を '(+) 'で取り除いてください。 –

+0

申し訳ありませんが、私はちょうど1週間前にOracleデータベースを学んでいます。私は古い構文について古い意味で何を意味するのか分かりません。ごめんなさい –

+0

oh thanx kinchit dalwani –

答えて

0

グループ内の行数r同じ番号のものです。

select * 
    from (select T1.*, row_number() over(partition by a,d,e order by NULL) num 
      from Table1 T1 
     ) x 
    left join (
     select T2.*, row_number() over(partition by a,d,e order by NULL) num 
      from Table2 T2 
     ) y 
    on x.a = y.a and x.d = y.d and x.e = y.e and x.num=y.num 
関連する問題