【发布时间】:2017-12-10 18:48:25
【问题描述】:
我有以下名为 tbl_pet_owners 的 MySQL 表:
+--------+----------+--------+
| name | pet | city |
+========+==========+========+
| jane | cat | Boston |
+--------+----------+--------+
| jane | dog | Boston |
+--------+----------+--------+
| jack | cat | Boston |
+--------+----------+--------+
| jim | snake | Boston |
+--------+----------+--------+
| jim | goldfish | Boston |
+--------+----------+--------+
| joseph | cat | NYC |
+--------+----------+--------+
我想使用 COUNT 来获取每个城市的宠物数量,但是如果一个人拥有两个或多个相同类型的宠物,那么这些宠物被计为一个。宠物类型列在另一个名为 tbl_pet_types 的 MySQL 表中:
+----------+---------+
| pet | type |
+==========+=========+
| cat | mammal |
+----------+---------+
| dog | mammal |
+----------+---------+
| snake | reptile |
+----------+---------+
| goldfish | fish |
+----------+---------+
因此,由于简的猫和狗属于同一类型,因此它们被视为一只宠物。 在此示例中,结果将是:
Boston 4
NYC 1
关于如何实现这一点的任何提示?
【问题讨论】:
-
所以你是按城市、所有者和宠物类型分组的?
-
是的。没错。
-
到目前为止你尝试过什么?查看
Jointbl_pet_types表。 -
从 tbl_pet_owners GROUP BY 城市中选择城市,计数(DISTINCT 名称,宠物)
-
你尝试这样做会得到什么?