У меня есть следующие таблицы в 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);
Надеюсь, вы поможете мне с примером кода, чтобы начать.