首先,我知道我的问题标题有些混乱,所以请尝试解释。
我有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
}
]
}
]
希望您能理解。 预先感谢
[编辑]
顶部列出的表格
答案 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数据库中均正常运行...