Неправильно работает 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 и скобки.