Как исправить: Код ошибки: 1241. Операнд должен содержать 1 comun (s)? - PullRequest
0 голосов
/ 28 октября 2019

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

Код ошибки: 1241. Операнд должен содержать 1 столбец (столбцы)?

У меня есть эти таблицы:

airport

airport_id, 
city, 
country, 
name, 
phonenumber

и

route

route_number, 
start_date, 
finish_date, 
time, 
start_airport_id, 
finish_airport_id

Я хочу написать функцию, которую яукажите в его параметрах start_country, finish_country и date, и я хочу вернуть одну строку.

Так вот мой код:

FUNCTION `search`(start_country varchar(50), finish_country varchar(50), dat date)
RETURNS varchar(255) DETERMINISTIC
BEGIN
    DECLARE start_id, finish_id varchar(50);

    if (start_country is null ) or (finish_country is null) or (dat is null) then
        return 'Parameters are required.';
    end if;

    SELECT airport_id INTO start_id FROM airport where country=start_country;
    SELECT airport_id INTO finish_id FROM airport where country=finish_country;

    if (start_id is null) or (finish_id is null) then
        return 'There is no such country.';
    else
        RETURN (SELECT * FROM route
                WHERE start_airport_id=start_id
                AND  finish_airport_id=finish_id
                AND start_date=dat );

     end if;
END

Я пишу, чтобы выбрать

search('Hungary', 'France', '2019-03-08')

и я хотел бы получить:

route_number | start_date | finish_date | time |start_airprot_id| finish_airport_id
AI1000         2019-03-08    2019-03-08   3hours        1                2

Но я получаю код ошибки: 1241. Операнд должен содержать 1 столбец (столбцы)

...