我在Oracle 11g中下表:甲骨文從兩個表
表A
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)感興趣。
我想要實現的是創建一個視圖與這三列,但與兩個表中的信息。
但這種觀點必須滿足這個條件:記住
- 只取前6個從SITE_ID域字符兩個表。
例如,表A的第一條記錄有這個SITE_ID「BN9032U850」,所以如果我們對前6個字符進行子串處理,結果SITE_ID就是「BN9032」。但正如你所看到的,表B的第一條記錄具有相同的SITE_ID,所以會有重複的記錄。
如果發生這種情況,該記錄被添加到視圖必須從表A的一個,而不是在最後,我想要實現這個輸出一個從表B.:
視圖輸出
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);
我希望你能用一些示例代碼來幫助我開始。