2012-01-12 6 views
-2

私は2つのテーブル - routlocを持っています。oracleで交差をフェッチするクエリ?

表敗走列:

Id (PK) 
file_key 
rout_no 
.... 

この表は、800K、レコード

テーブルのLoc列

catalog_no(PK) 
country_id  
... 

この表は、700Kレコードを持っています。だから私はこのようなものが欲しいです(2つのテーブル間の交差)

SELECT rout.file_key,rout.rout_no,loc.country_id 
FROM ROUT_TBL rout, LOC_TBL loc 
WHERE rout.file_key != loc.catalog_no 

どうすれば教えてもらえますか?

+0

int ersectは設定された操作です。詳細はこちらを参照してください。http://docs.oracle.com/cd/B28359_01/server.111/b28286/queries004.htm – tbone

答えて

3

あなたが何を求めているのか分かりません。 「交差点」は、両方の表にどの値が存在するかを判別することを示す数学的な用語です。しかし、あなたが投稿したクエリは、まったく反対のものを探しているように見えます。

あなたがからのデータとともにROUTからのデータが必要な場合LOC

SELECT rout.file_key, 
     rout.rout_no 
    FROM rout_tbl rout 
WHERE NOT EXISTS(SELECT 1 
        FROM loc_tbl loc 
        WHERE loc.catalog_no = rout.file_key) 

には存在しませんROUTのすべての行をしたい場合、あなたは本当に交差点

SELECT rout.file_key, 
     rout.rout_no, 
     loc.country_id 
    FROM rout_tbl rout 
     JOIN loc_tbl loc ON (rout.file_key = loc.catalog_no) 

を意味している場合LOC存在する場合は

SELECT rout.file_key, 
     rout.rout_no, 
     loc.country_id 
    FROM rout_tbl rout 
     LEFT OUTER JOIN loc_tbl loc ON (rout.file_key = loc.catalog_no)