У меня есть следующие таблицы в Oracle 11g:Oracle создать вид из двух таблиц
Таблица 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 из обеих таблиц.
Например, первая запись из таблицы А имеет этот Site_ID «BN9032U850», так что если мы подстрока первые 6 символов, в результате SITE_ID будет «BN9032». Но, как вы видите, первая запись из таблицы B имеет тот же SITE_ID, поэтому будет дубликат записи.
Если это произойдет, то запись будет добавлена к представлению должна быть одна из таблицы А, а не один из таблицы B. В конце концов, я хочу, чтобы достичь этого результата:
VIEW OUTPUT
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);
Надеюсь, вы можете мне помочь с кодом примера, чтобы начать.