SELECT a.account_no, (CASE WHEN e.reading_month IS NULL then "" WHEN e.reading_month IS NOT NULL then STR_TO_DATE(CONCAT(e.reading_month," ",e.reading_year), "%m %Y") end) as reading_date, (CASE WHEN e.reading_month IS NULL then "" else e.reading end) as reading FROM swws_users as a, water_reading as e WHERE e.account_no = a.account_no OR e.account_no is NULL AND (CASE WHEN e.reading_month IS NULL then "" WHEN e.reading_month IS NOT NULL then STR_TO_DATE(CONCAT(e.reading_month," ",e.reading_year), "%m %Y")= (SELECT MAX(STR_TO_DATE(CONCAT(j.reading_month," ",j.reading_year), "%m %Y")) FROM water_reading as j,swws_users as k WHERE j.account_no=e.account_no) end) GROUP BY a.account_no
it will still output
|account_no | reading_date | reading | ====================================== |040000238 | 2017-12-00 | 2230 | |13112546 | 2017-12-00 | 738 |
it will only fetch the one with the data in the second table
while the output i want is
|account_no | reading_date | reading | ====================================== |040000238 | 2017-12-00 | 2230 | |13112546 | 2017-12-00 | 738 | |00023134 | NULL | NULL | |131324555 | NULL | NULL | |00031-FREE | NULL | NULL |