私は、Oracle 11gの次のテーブルがあります:あなたは両方のテーブルに見ることができるようにOracleの二つのテーブル
が表
SITE_ID SITE_NAME VECTOR .........MANY OTHER FIELDS
BN9032U850 REY DEL MAR ENSENADA
BS2362U850 COSTA BAJA LA PAZ
BS2601U850 LA PAZ LA PAZ
BS2606U850 CONQUISTADORES LA PAZ
BN2679U850 COAST CAST TIJUANA
BN7116U850 PALACIO AZTECA TIJUANA
表B
SITE_ID SITE_NAME VECTOR .........MANY OTHER FIELDS
BN9032 REY DEL MAR (null)
BN9033 BRISAS DEL MAR (null)
BS2601 CUMBRES DE LA PRESA (null)
BN9038G850 REAL DEL CASTILLO (null)
BS0014G850 SAN BRUNO (null)
たくさんありますが他のフィールドが、私は(SITE_ID、SITE_NAME、VECTOR)書いたものだけに興味があります。
私が達成したいのは、これらの3つの列を持つビューを両方のテーブルの情報と共に作成することです。
しかし、このビューは、この条件を満たさなければならない:
- は念頭に置いて、両方のテーブルからのSITE_IDフィールドから最初の6つの文字を取ります。例えば
、表Aからの最初のレコードは、このSITE_ID「BN9032U850」を有しているので、我々は最初の6つの文字サブストリング場合、得SITE_IDは「BN9032」であろう。しかし、あなたが見ることができるように、表Bの最初のレコードは同じSITE_IDを持っているので、重複レコードが存在します。
この問題が発生した場合は、ビューに追加するレコードは表Aから1、ではない私は、この出力を達成したい最終的には表Bからのいずれかである必要があります
VIEW出力
SITE_ID SITE_NAME VECTOR
BN9032 REY DEL MAR ENSENADA --->Table A
BS2362 COSTA BAJA LA PAZ --->Table A
BS2601 LA PAZ LA PAZ --->Table A
BS2606 CONQUISTADORES LA PAZ --->Table A
BN2679 COAST CAST TIJUANA --->Table A
BN7116 PALACIO AZTECA TIJUANA --->Table A
BN9033 BRISAS DEL MAR (null) --->Table B
BN9038 REAL DEL CASTILLO (null) --->Table B
BS0014 SAN BRUNO (null) --->Table B
私はこの文でそれに取り組んできましたが、何かが間違っているようです。
SELECT SUBSTR(SITE_ID,1,6) SITE_ID,SITE_NAME, VECTOR FROM TABLE_A
WHERE(SUBSTR(SITE_ID,1,6)) NOT IN
(SELECT SUBSTR(SITE_ID,1,6) FROM TABLE_B)
UNION
SELECT SUBSTR(SITE_ID,1,6) SITE_ID,SITE_NAME, VECTOR FROM TABLE_B
WHERE(SUBSTR(SITE_ID,1,6)) NOT IN
(SELECT SUBSTR(SITE_ID,1,6) FROM TABLE_A);
私はいくつかのサンプルコードを手伝ってください。