sql - 为特定状态提供服务的公司

时间:2014-05-13 17:01:56

标签: php mysql sql database

我有一个公司的表(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)中执行此操作?

我们假设没有区域/子区域例外。

非常感谢!!

1 个答案:

答案 0 :(得分:0)

您可以使用分组来获取城市和number_of_companies服务的列表,但这不会给公司()。

Select city, count(*) as 'Number of companies serve'
from some_table
group by state

您的表格假设所有公司都在其所在州的城市内服务。 也不可能列出所有服务于城市的公司,因为该信息不在您的表中,除非您假设公司为其OtherRegions中的所有城市提供服务?

相关问题