другом one-to-one отношением. Причем в data_extra строк может быть меньше.
Надо получить все данные по data + data_extra по условию, что extra != ‘some value’. Причем если для data нет соответствующей записи в data_extra, то в результат они должны включаться.
Работающий запрос выглядит так:
select * from data left join data_extra on data_id = extra_id
where extra != 'e1' or extra_id is null;
Можно ли как-то переписать этот запрос, чтобы в секцию where не включать явно or extra_id is null? В моем реальном проекте запрос сложный: там много связанных таблиц, много or запросов, и строится он динамически.
Может быть можно как-то заменить left join на что-то другое, аль еще какое-то решение?
В dbfiddle написал sql для создания тестовых данных + сам вышеописанный запрос:
https://dbfiddle.uk/?rdbms=postgres_12&fiddle=de2773ad68e0b9b54d93fd387a8f922f
сдвинь его в on из where
Обсуждают сегодня