Я ищу запрос некоторых данных, относящихся к лекарствам, которым был назначен пациент, которые относятся к определенной категории. Но я также хочу показать пациентам, у которых нет лекарств. Мой запрос до сих пор:Предложение INNER JOIN, игнорирующее значения NULL
SELECT
pd.fname,
pd.lname,
pp.drug_name,
pp.drug_strength
FROM
patient_data pd
FULL OUTER JOIN patient_prescr pp on pp.pid = pd.pid
FULL OUTER JOIN formulary f on pp.med_id = f.id
INNER JOIN formulary_categories fc on f.category = fc.id AND fc.id in (34,36,37,38,5)
WHERE
pd.lname = 'Test'
При применении INNER JOIN
к formulary_categories
, я могу правильно определить категорию, в которой наркотик, который я хочу задать, но когда я делаю это, он не будет включать пациентов, которые не имеют какой-либо лекарства.
С INNER JOIN
вступления в таблице formulary_categories, мои результаты выглядят следующим образом:
-----------------------------------------------------------------------
fname | lname | drug_name | drug_strength
-----------------------------------------------------------------------
Cathy Test Clonazepam 0.5mg
Larry Test Librium 25mg
Jennifer Test Vistrail 25mg
-----------------------------------------------------------------------
Если изменить INNER JOIN
к FULL OUTER JOIN
, он просто игнорирует category
ограничения, так и тянет все категории.
Однако запрос не будет включать пациентов, у которых нет каких-либо назначенных лекарств. Id, как мои результаты, чтобы выглядеть примерно так:
-----------------------------------------------------------------------
fname | lname | drug_name | drug_strength
-----------------------------------------------------------------------
Cathy Test Clonazepam 0.5mg
Larry Test Librium 25mg
Joe Test NULL NULL
Jennifer Test Vistrail 25mg
Steve Test NULL NULL
-----------------------------------------------------------------------
Try 'ЛЕВЫЙ JOIN' вместо' ВНУТРЕННЕЙ JOIN'. –
'LEFT JOIN' вместо' INNER JOIN'? – dario