@Cyberjs

Не могу выполнить sql INSERT yii2 mssql, как правильно составить INSERT?

Не получается выполнить команду:

$command =  Yii::$app->db
            ->createCommand("
                    INSERT INTO  Test.dbo.tb_info (Driverid,CarCode,CarNumber,CarMark)
                    VALUES (
                    (SELECT Driverid,CarCode FROM Test.dbo.drivers'),
                    (SELECT CarNumber,CarMark FROM Test.dbo.sprCar_Info'))")->execute();

Выдает ошибку:

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

Хотя в INSERT INTO 4 значения, так же и в SELECT 4 значения.
  • Вопрос задан
  • 250 просмотров
Решения вопроса 2
star52
@star52
Программист
Ну так у вас в запросе на вставку ни одна строка получается, а 2 строки по два столбца.
Во вторых у вас ' после Test.dbo.drivers , так надо?

Test.dbo.drivers и Test.dbo.sprCar_Info каким образом соотносятся? Вы пытаетесь из двух разных таблиц взять по 2 столбца и соединить в третей Test.dbo.tb_info?

Вот так, на месте знаков вопроса поставьте поле по которому можно объединить таблицы
INSERT INTO  Test.dbo.tb_info (Driverid,CarCode,CarNumber,CarMark)
SELECT 
d.Driverid,d.CarCode, ci.CarNumber, ci.CarMark
FROM
    Test.dbo.drivers d
    INNER JOIN Test.dbo.sprCar_Info ci ON ci.??? = d.???
Ответ написан
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Селект внутри values может возвращать только одно значение. Не несколько колонок, не несколько строк, а значение одной колонки одной строки.

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

Войдите, чтобы написать ответ

Похожие вопросы