mysql - 3张表之间的特殊连接

标签 mysql sql

我创建了 3 个 mysql 表:

表“城市”:包含城市

i.e   |  name  |
      +========+
      | Athens |
      +--------+
      | Rome   |
      +--------+
      | Paris  |
      +--------+

表“类别”:包含类别

i.e   |    name    |
      +============+
      | category_1 |
      +------------+
      | category_2 |
      +------------+

表“shops”:包含商店

i.e   |  name  |  category_name  |  city_name  |
      +========+=================+=============+
      | shop_1 |   category_2    |    Rome     |
      +--------+-----------------+-------------|
      | shop_2 |   category_2    |    Rome     |
      +--------+-----------------+-------------+
      | shop_3 |   category_1    |    Paris    |
      +--------+-----------------+-------------+

我正在尝试创建一个查询,该查询将允许我创建以下 html 数组(显示每个城市按类别分组的商店数量):

|        ||   category_1   |  category_2 |
+========++================+=============+
| Athens ||        0       |      0      |
+--------++----------------+-------------|
| Rome   ||        0       |      2      |
+--------++----------------+-------------+
| Paris  ||        1       |      0      |
+--------++----------------+-------------+

预先感谢您, 扬尼斯

最佳答案

试试这个

select c.name,
sum(case when s.category_name='category_1' then 1 else 0 end) as categoty_1,
sum(case when s.category_name='category_2' then 1 else 0 end) as categoty_2
from city as c left join shops as s on c.name=s,city_name
group by c.name

关于mysql - 3张表之间的特殊连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32310990/

相关文章:

php - 比较当前日期之前和之后的数据集

sql - 如何将多个 parent 映射到单个 child 记录

php - 避免在注册表单 php 中注入(inject) SQL

mysql - 在 SQL 中将一列中的一个值与另一列中的多个值进行匹配

sql - 在 PostgreSQL : show the first N rows for each group? 中分组 LIMIT

php - 以管理员和普通用户身份登录

mysql - 错误: Method missing for Active record query : find_by_attribute_name ('test_data' ) not working

sql - 使用 Postgres 时为 "Operator does not exist: integer =?"

php - 阻止用户两次报名参加事件

php - 使用 WHERE 子句将复选框插入数据库