In T-SQL for SQL Server 2005 (replace CTE with the built-in subquery, if not):
WITH ownership AS ( SELECT owner, COUNT(dog_name) AS num_dogs, 0 AS num_cats -- counts all non-NULL dog_name FROM dogs GROUP BY owner UNION SELECT owner, 0 AS num_dogs, COUNT(cat_name) as num_cats -- counts all non-NULL cat_name FROM cats GROUP BY owner ) SELECT ownership.owner ,SUM(ownership.num_dogs) AS num_dogs ,SUM(ownership.num_cats) as num_cats FROM ownership GROUP BY ownership.owner
Cade roux
source share