SQL-скрипт HANA INSERT INTO с INNER JOIN не может вставлять значения - PullRequest
0 голосов
/ 20 ноября 2018

Я новичок в SQL и надеюсь, что вы поможете мне с моей проблемой.

У меня есть таблица с именем Order_Status_Form_3 со столбцами Order_ID (KEY), Customer_ID, Customer_Unique_ID, Status(KEY) и Date.

Таблица заполнена, кроме столбца Customer_Unique_ID.

Чтобы заполнить этот столбец, мне нужно сослаться на таблицу Customer, где Customer_ID связан с Customer_Unique_ID, поэтому правильные идентификаторы перекрывают правильные места.Если Customer_ID в Order_Status_Form_3 равно Customer_ID в таблице Customer, то указанное Customer_Unique_ID должно быть вставлено в столбец Customer_Unique_ID в Order_Status_Form_3.

Я попытался объединить INSERT INTO с SELECT и INNER JOIN, но получил сообщение об ошибке, в котором говорится:

"невозможно вставить NULL или обновить до NULL:Номер заказа".

Полагаю, программе непонятно, где вставить найденные значения, и она пытается вставить ее во все столбцы.Я искал похожие проблемы, но не смог найти удовлетворительных ответов для своей конкретной проблемы.

Вот код, который я использовал:

Insert Into "HXE_109"."Order_Status_Form_3" ("Customer_Unique_ID") 
Select customer."customer_unique_id"
From "HXE_109"."Customer" As customer
Inner Join "HXE_109"."Order_Status_Form_3" As OrderStatus3
On OrderStatus3."Customer_ID" = customer."customer_id"

Я попытался указать место для вставки значений, найденныхприкрепив WHERE в конце, но получил ту же ошибку.

Where OrderStatus3."Customer_ID" = customer."customer_id"

Кто-нибудь знает, как решить эту проблему и может сказать мне, где моя ошибка?

Заранее спасибодля чтения этого длинного вопроса и оставления ответа.

Редактировать

Я пытался использовать update, но кажется, что я не могу понять это правильно.

Update "HXE_109"."Order_Status_Form_3" Set "Customer_Unique_ID" = (Select customer."customer_unique_id" From "HXE_109"."Customer" As customer Inner Join "HXE_109"."Order_Status_Form_3" As OrderStatus3 On OrderStatus3."Customer_ID" = customer."customer_id") Теперь я получаю следующую ошибку:

однострочный запрос возвращает более одной строки

Нужно ли здесь использовать условие Where?

Извините за мою глупость.(

1 Ответ

0 голосов
/ 18 декабря 2018

Как я мог бы следить за комментариями, вам нужно выполнить инструкцию UPDATE

Пожалуйста, проверьте следующую команду DML

Update "HXE_109"."Order_Status_Form_3" 
Set 
    "Customer_Unique_ID" = customer."customer_unique_id"
From "HXE_109"."Order_Status_Form_3" As OrderStatus3
Inner Join "HXE_109"."Customer" As customer
    On OrderStatus3."Customer_ID" = customer."customer_id"

Если я попытаюсь объяснить сообщения об ошибках:

"невозможно вставить NULL или обновить до NULL: Order_ID".

Это связано с полем, определенным как NOT NULL.Таким образом, в вашей целевой таблице ORDER_ID определен как «не нулевой», поэтому в INSERT вы должны предоставить для него значение или определить его как поле идентификации в вашей таблице HANA определение

вторая ошибка: запрос одной строки возвращает более одной строки

Это связано со случаем, когда SQL Engine ожидает значение, а не набор значений.Таким образом, оператор SELECT, который вы присваиваете результаты полю Customer_Unique_ID, возвращает более 1 значения.В этом случае движок SQL вызывает исключение

...