Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have 2 MySQL and I'm trying to get the number of owners who own at least one dog, for each city. My tables are:

owners
  id, name, city

and

dogs
  id, owner_id, name, weight

I have the following so far:

SELECT owners.city, count(dogs.id) AS 'Owners' 
FROM owners INNER JOIN dogs ON (owners.id = dogs.owner_id) 
GROUP BY owners.city

However, this gives me the total number of dogs per city. But I'd like to get the number of dog owners per city.

How should I do this?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
597 views
Welcome To Ask or Share your Answers For Others

1 Answer

You have to count only owners id with DISTINCT word, which counts only unique owners.

SELECT owners.city, count(DISTINCT owners.id) AS 'Owners' 
FROM owners INNER JOIN dogs ON (owners.id = dogs.owner_id) 
GROUP BY owners.city

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...