#sql #oracle #join #left-join
#sql #Oracle #Присоединиться #синтаксическая ошибка #слева-объединение
Вопрос:
Мне нужно создать новую таблицу в моей базе данных с помощью инструкции left join для двух таблиц из разных схем. Вот мой код ниже:
CREATE TABLE NEW_TABLE
FROM SCHEMA_1.TABLE_A X
LEFT JOIN SCHEMA_2.TABLE_B Y
ON X.NAME = Y.NAME
AND X.NUMBER = Y.NUMBER
Я получаю ошибку SQL:
ORA-00922: отсутствующий или недопустимый параметр
00922. 00000 — «отсутствующий или недопустимый параметр»
Комментарии:
1. Вам не хватает
select
.2. Вы уверены, что хотите создать таблицу, а не представление? Казалось бы, более вероятно, что вы захотите создать представление, объединяющее две таблицы, чтобы вы могли запрашивать представление и получать актуальные данные, а не иметь устаревшую копию данных.
3. Я новичок в использовании представлений, поэтому, если я правильно понимаю, представление более динамично и обновляется по мере обновления двух родительских таблиц?
Ответ №1:
Вам не хватает as select
предложения:
CREATE TABLE NEW_TABLE
AS ( -- This was missing
SELECT * -- So was this
FROM SCHEMA_1.TABLE_A X
LEFT JOIN SCHEMA_2.TABLE_B Y ON X.NAME = Y.NAME AND
X.NUMBER = Y.NUMBER
)
Комментарии:
1.
SELECT *
не будет работать, поскольку две таблицы совместно используют поля с одинаковыми именами.2. Ах-ха! Спасибо.
Ответ №2:
Не используйте NUMBER
в качестве имени столбца это ключевое слово oracle.
Переходя к запросу, если единственными общими столбцами в двух таблицах являются NAME
, NUMBER
тогда вы можете попробовать следующее
CREATE TABLE NEW_TABLE
AS (
SELECT *
FROM SCHEMA_1.TABLE_A X
LEFT JOIN SCHEMA_2.TABLE_B Y Using(NAME,NUMBER)
)
Комментарии:
1. Придирки: круглые скобки вокруг select бесполезны
2. Спасибо. Ценю помощь.