php - 连接具有多个结果的表,然后合并到一列中

标签 php mysql database

首先,我知道我的问题标题有点或更令人困惑,所以让我尝试解释一下。

我有 3 张 table ,

  1. 公司
  2. company_branches
  3. 城市

因此,对于这些表格,我想从公司中选择所有表格并加入company_branches,然后加入城市

所有只有一个 SQL 查询, 我希望最终得到一个公司列表,每个公司在名为“分支机构”的列下都有其分支机构(数组)。

参见下面的示例。

companies_table

  id    |   name
--------+-----------------------
  1     |  microsoft
--------+-----------------------
  2     |  facebook



company_branches_table

  id    |   company_id    | city_id
--------+-----------------+-------------
  1     |  1              | 3
--------+-----------------+-------------
  2     |  1              | 2
--------+-----------------+-------------
  3     |  2              | 1


cities

  id    |   name     
--------+-------------
  1     |  LA              
--------+-------------
  2     |  New york
--------+-------------
  3     |  Chicago

这是我希望的结果

Json 或关联数组

[
   {
     id       : 1,
     name     : microsoft,
     branches : [
                  {
                     id    : 2,
                     city_name : New york
                  },   
                  {
                     id    : 3,
                     city_name : Chicago
                  }
                ]
   },
   {
     id       : 2,
     name     : facebook,
     branches : [
                  {
                     id    : 1,
                     city_name : LA
                  }   

                ]
   }

]

希望你能理解。 提前致谢

<小时/>

[编辑]

<小时/>

顶部列出的表格

最佳答案

也许这会有所帮助

SELECT ct.id,ct.name,group_concat(c.id, '->', c.name) AS 分支机构 FROM Companies_table AS ct JOIN company_branches_table AS cbt ON ct.id = cbt.company_id JOIN 城市AS c ON c.id = cbt.city_id GROUP BY ct.id

关于php - 连接具有多个结果的表,然后合并到一列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54762879/

相关文章:

php - 为什么 PHP 中有 2 个文件大小函数(filesize() 和 SplFileInfo::getSize)?

mysql - 即使结果为空,如何显示所有结果查询

database - 如何在数据库设计中存储旧版本的 ID 字符串?

mysql - 在彼此内部使用多个 SQL 语句

database - 根据暂存或生产切换 Azure ConnectionString

database - 基于Postgresql继承的数据库设计

php - 从 MySQL 查询填充组合框的值字段

php - Mysql 函数 count() 逐行计数

PHP/MySQL - 将日期时间显示为日期

python - 如何使用 Python Flask API 可靠地保持 SSH 隧道和 MySQL 连接打开?