cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!

LEFT JOIN по условию IF?

Как сделать left join только если параметр равен 1:
DROP PROCEDURE IF EXISTS get_artist;
CREATE PROCEDURE get_artist(IN artist_id integer(11), IN show_links integer(1))
BEGIN
    SELECT * FROM artist where id = artist_id;
    IF show_links=1
        THEN LEFT JOIN artist_social_links ON artist_social_links.artist_id = artist_id;
    END IF;
end;
CALL get_artist(196796, 1);


Вот мой гк но он не работает подскажите как правильно реализовать
  • Вопрос задан
  • 150 просмотров
Решения вопроса 2
@Akina
Сетевой и системный админ, SQL-программист.
DROP PROCEDURE IF EXISTS get_artist;
DELIMITER ;;
CREATE PROCEDURE get_artist(IN artist_id integer(11), IN show_links integer(1))
BEGIN
    CASE WHEN show_links=1
         THEN 
             SELECT * 
             FROM artist 
             where id = artist_id;
         ELSE  
             SELECT * 
             FROM artist 
             LEFT JOIN artist_social_links ON artist_social_links.artist_id = artist_id 
             where id = artist_id ;
    END CASE;
END;;
DELIMITER ;
CALL get_artist(196796, 1);
Ответ написан
Mikhail_E
@Mikhail_E
1С, SQL
.....
SELECT * 
FROM artist as a
LEFT JOIN artist_social_links  as asl
ON a.id = asl.artist_id  
and show_links = 1
where a.id = artist_id;
.....
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы