I have two tables. Table A has a list of employee names. Table B is a complex table with information about phone calls made by employees.
My goal is to make a table with columns ‘name’ and ‘callCount’. I am aiming to do this with a ‘left join’ and a ‘group by’, but I keep missing the employees that have made no calls. How can I just get it to keep the name and just put a zero there?
Perhaps I am close and someone can point out my typo? Thanks in advance for your help, here is the SQL:
SELECT A.name, COUNT(B.call_id) AS 'outgoing call count'
FROM EmployeeTable A
LEFT JOIN CallTable B
ON A.name = B.call_from_name
WHERE B.call_type LIKE 'outgoing'
AND B.voice_mail = '0'
...
GROUP BY A.name
It’s a JOIN not a NULL problem: your filter is changing the OUTER to an INNER JOIN. This means you only get COUNT where you have rows in CallTable (B) rather than the OUTER JOIN you wanted.
Edit: after your comment elsewhere, all your filters on B must be in the derived table, not in the outer where.