Ошибка 1222: The Used SELECT statements have a different number of columns. Что делать?

Рейтинг: 0Ответов: 1Опубликовано: 14.01.2023

Создаю функцию которая будет подсчитывать суммарную цену. Но вылезает ошибка при ее компиляции: 1222. Идей для решения вообще не возникло. Не могу понять в чем ошибка?! Помогите пожалуйста


delimiter $$
create function countprice(id int) returns int
deterministic
begin 
    declare a int;
    declare b int;
    SELECT services_has_queryautoservice.Queryautoservice_ID AS 'ID заявки', 
     SUM(services.`Price`) into b FROM services_has_queryautoservice JOIN services ON services_has_queryautoservice.Services_ID = services.ID WHERE services_has_queryautoservice.Queryautoservice_ID=id;
    set a = b + 1000;
    return a;
end $$
delimiter ;

Таблица Services

Вот таблица Services

Таблица services_has_queryautoservice

services_has_queryautoservice

Ответы

▲ 1Принят

Ошибка возникает из-за того, что количество выбираемых полей в SELECT должно быть таким же, сколько переменных указано после INTO.

У вас в SELECT выбирается 2 значения, а в INTO стоит 1 переменная.

Так же, в таких запросах алиасы полей не используются. Их можно использовать только для подзапросов.

delimiter $$
create function countprice(id int) returns int
deterministic
begin 
    declare a int;

    SELECT 
        SUM(services.`Price`) into a 
    FROM services_has_queryautoservice 
    JOIN services ON services_has_queryautoservice.Services_ID = services.ID 
    WHERE services_has_queryautoservice.Queryautoservice_ID=id;
    
    return a + 1000;
end $$
delimiter ;