我有一个公司的表(MySQL InnoDB),各自的地址。一家公司为该市的客户提供服务。 有了这个,我列了一个专栏来设置公司可以服务的其他地区(州),还有一个列来设置公司是否为全国服务:
id State City Street Name OtherRegions serveCountry
----------------------------------------------------------------------------------------
1 CA Los Angeles Street Microsoft NULL NULL
2 NY New York Street2 Mercur chip CA NULL
3 NY Buffalo street3 apple inc NULL 1
4 TX Houston street4 Climp corp CA;NY NULL
5 CA San Francisco street5 Motorola NULL NULL
6 TX San Antonio street6 HP Inc. NULL NULL
7 CA San Francisco street7 sony NULL NULL
我的问题是:如何通过为各自城市服务的公司数量来获得特定州的城市?
预期结果:
CA状态
City Number of Companies serve
-----------------------------------------------------------
Los Angeles 4 (Microsoft, Mercur, Apple, Climp)
San Francisco 4 (Mercur, Apple, Climp, Motorola, Sony)
纽约州
City Number of Companies serve
-----------------------------------------------------------
New York 3 (Mercur, Apple, Climp)
Buffalo 2 (Apple, Climp)
我可以在同一个查询中执行此操作,还是必须在多个查询(PHP)中执行此操作?
我们假设没有区域/子区域例外。
非常感谢!!
答案 0 :(得分:0)
您可以使用分组来获取城市和number_of_companies服务的列表,但这不会给公司()。
Select city, count(*) as 'Number of companies serve'
from some_table
group by state
您的表格假设所有公司都在其所在州的城市内服务。 也不可能列出所有服务于城市的公司,因为该信息不在您的表中,除非您假设公司为其OtherRegions中的所有城市提供服务?