@kealman

PgSQL. Как применить условие в выборке, только, если поле не пустое?

Добрый день! Подскажите пожалуйста, как сделать выборку (без использования функций) чтобы условие срабатывало только, если поле не пустой массив. Поясню на примере:
Есть 2 таблицы
CREATE TABLE public.t1
(
  id character varying(24) NOT NULL,
  ratings integer[]
)

CREATE TABLE public.t2
(
  id character varying(24) NOT NULL,
  rating integer
)


Хочется сделать вот такую выборку (псевдокод):
SELECT * FROM t1
INNER JOIN t2 ON IF t1.ratings.length > 0 THEN t2.rating = any(t1.ratings) ELSE true


Спасибо!
  • Вопрос задан
  • 880 просмотров
Решения вопроса 1
@kealman Автор вопроса
Разобрался. Решение, как всегда лежало на поверхности, может кому пригодится:
SELECT * FROM t1
INNER JOIN t2 ON array_length(t1.ratings,1) IS NULL OR t2.rating = any(t1.ratings)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
SELECT
    *
FROM t1
    JOIN t2 USING(id)
WHERE
    1 = IF(t1.ratings.length > 0, (IF(t2.rating = ANY(t1.ratings), 1, 0)), 1)


правда, это диалект mySQL, но идея примерно такая.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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