I want to keep show my first table data even the second table condition is false.
Table 1
x
---------------------------
ID | Name
---------------------------
1 | Panda
2 | Tiger
---------------------------
Table 2
---------------------------
ID | Date | Weight
---------------------------
1 | 2019-02-01 | 30
1 | 2019-02-10 | 31
---------------------------
I expect data like this when I asking data for the date = ‘2019-02-18’ and ID = 1
-------------------------------------
ID | Name | Date | Weight
-------------------------------------
1 | Panda | 2019-02-18 | 0
-------------------------------------
Advertisement
Answer
Are you looking for a simple LEFT JOIN
, as follows ?
SELECT t1.id, t1.name, date '2019-02-18', COALESCE(t2.weight, 0) weight
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id AND t2.date = date '2019-02-18'
WHERE t1.id = 1
The LEFT JOIN
optionaly searches for record in table2
with the given date criteria. When no record match, t2.weight
is NULL
: COALESCE()
picks up this situation, and returns 0
instead.