Использование в параметре в подзапросе? - PullRequest
0 голосов
/ 17 октября 2019

Возможно ли использовать в параметре в подзапросе?

Я пытаюсь объединить три таблицы, и использую параметр в подзапросе, но я получаю ошибку:


drop procedure if exists displayFilmInfo;
delimiter //
create procedure displayFilmInfo(in in_category_id tinyint, in in_language_id tinyint)
begin

    if in_category_id != 0  and in_language_id != 0 then
        select film.title, after_category.name from film
            inner join film_category on film_category.film_id = film.film_id
            inner join (
                select category_id, name from category when category.category_id =  in_category_id
            ) after_category on after_category.category_id = film_category.category_id
            inner join (
                select language_id, name from language when in_language_id = language.language_id
            ) after_language on after_language.language_id = film.language_id
    end if;

end //
delimiter ;

call displayFilmInfo();

Этоshow:

Запрос в порядке, затронуто 0 строк, 1 предупреждение (0,00 с)

ОШИБКА 1064 (42000): в синтаксисе SQL имеется ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'когда category.category_id = in_category_id) after_category on afte' в строке 8 ОШИБКА 1305 (42000): ПРОЦЕДУРА sakila.displayFilmInfo не существует

1 Ответ

0 голосов
/ 17 октября 2019

Пожалуйста, обновите ваш выбор оператора до -

select film.title,
       after_category.name
from film
inner join film_category on film_category.film_id = film.film_id
inner join (select category_id,
                   name
            from category
            where category.category_id =  in_category_id) after_category on after_category.category_id = film_category.category_id
inner join (select language_id,
                   name
            from language
            where in_language_id = language.language_id) after_language on after_language.language_id = film.language_id
...