连接具有多个结果的表,然后合并为一列

时间:2019-02-19 09:33:05

标签: php mysql database

首先,我知道我的问题标题有些混乱,所以请尝试解释。

我有3张桌子,

  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
                  }   

                ]
   }

]

希望您能理解。 预先感谢


[编辑]


顶部列出的表格

2 个答案:

答案 0 :(得分:0)

也许这会有所帮助

SELECT ct.id,ct.name,group_concat(c.id, '->', c.name) AS branches FROM companies_table AS ct JOIN company_branches_table AS cbt ON ct.id = cbt.company_id JOIN cities AS c ON c.id = cbt.city_id GROUP BY ct.id

答案 1 :(得分:0)

您可以使用group_concat()

=[cmbCountry]

简单方法...

    SELECT c.NAME                AS companyName, 
       Group_concat(ci.NAME) AS totalBranches 
FROM   companies_table c 
       INNER JOIN company_branches_table cb 
               ON cb.company_id = c.id 
       INNER JOIN cities ci 
               ON ci.id = cb.city_id 
GROUP  BY c.NAME

两个查询在MySQL数据库中均正常运行...