I’m doing an inner join on a table like this:
SELECT *
FROM patient p
INNER JOIN
vaccine v
ON
p.vaccine_id = v.id
The condition f.vac_1 = mv.id might not been satisfied in the case where a person have not been vaccinated. In such case, I don’t want to ignore the row, but instead of displaying the vaccine name (which is the purpose of the inner join) to display an emtpy string.
How can this be done ?
Example
Table vaccinne
| id | name |
|---|---|
| 1 | Moderna |
| 2 | Comirnaty |
| 3 | Janssen |
Table patient
| id | name | vaccine_id |
|---|---|---|
| 1 | john | 1 |
| 2 | kermit | 2 |
| 3 | jessica |
I’m looking for a query to produce:
| id | name | vaccine_id |
|---|---|---|
| 1 | john | Moderna |
| 2 | kermit | Comirnaty |
| 3 | jessica |
Advertisement
Answer
If I understand correctly, you want a left join starting with foo:
SELECT *
FROM foo f LEFT JOIN
vac v
ON f.vac_1 = mv.id