Задать вопрос
@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 значения.
  • Вопрос задан
  • 274 просмотра
Подписаться 2 Простой 13 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия «Белый» хакер
    13 месяцев
    Далее
  • Яндекс Практикум
    Системный администратор
    6 месяцев
    Далее
  • Java Online Projects
    Новые времена: Spring Boot 3.x + HATEOAS
    2 недели
    Далее
Решения вопроса 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 может возвращать только одно значение. Не несколько колонок, не несколько строк, а значение одной колонки одной строки.

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

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

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