-3

我有 2 个 MySQL,我正在尝试获取每个城市至少拥有一只狗的所有者数量。我的桌子是:

owners
  id, name, city

dogs
  id, owner_id, name, weight

到目前为止,我有以下内容:

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

但是,这给了我每个城市的狗总数。但我想知道每个城市的狗主人数量。

我该怎么做?

4

2 回答 2

1

您必须仅计算具有 DISTINCT 字词的所有者 ID,该词仅计算唯一所有者。

SELECT owners.city, count(DISTINCT owners.id) AS 'Owners' 
FROM owners INNER JOIN dogs ON (owners.id = dogs.owner_id) 
GROUP BY owners.city
于 2013-05-10T09:17:56.927 回答
0

您提供的信息无法准确回答。有两个单独的表,每个表都有描述事物的属性(狗、主人),但这些表是不相交的。

我建议在“dogs”表中添加一个“owner_id”列。然后,您可以从所有者、按城市分组等中进行选择。

更新问题后,为您解决了这个问题:http ://sqlfiddle.com/#!2/403f7/4/0

于 2013-05-10T08:56:14.183 回答