Неправильно работает LEFT JOIN pgsql

У меня есть 2 таблицы. investment_project и passport_financing. Мне нужно вывести содержание первой таблицы и соответствующие записи из второй. Если во второй таблице нет записи по внешнему ключу, выводить NULL

SELECT 
  ip.id_investment_project, 
  pf.total_passport_financing_plan 
FROM 
  managingcp.investment_project ip 
  LEFT JOIN managingcp.passport_financing pf ON ip.id_investment_project = pf.id_investment_project_passport 
WHERE 
  pf.id_financial_indicators_capital_construction = (
    SELECT 
      id_financial_indicators_capital_construction 
    FROM 
      nsi.financial_indicators_capital_construction 
    WHERE 
      cod_fin_ind = '1'
  ) 

По итогу у меня вместо 5000+ тысяч записей выводит 12 (количество соотвтв. записей из второй таблицы)


Ответы (1 шт):

Автор решения: CrazyElf

Это потому, что вы наложили условие на присоединяемую таблицу через WHERE. Накладывайте условия только через LEFT JOIN ... ON ..., если хотите, чтобы в итоговой выдаче были все записи из левой таблицы. В ON вы можете использовать сложное условие через AND, OR и скобки.

→ Ссылка