2013-04-10 163 views
0

我有一个MySQL的第一个表格的结构如下:MySQL查询,PHP计数

http://www.clubmadam.com/country.jpg

我需要一个SQL查询:

http://www.clubmadam.com/zadatak.jpg

MySQL的第二个表的结构统计每个国家的城市数量和 总结全国所有城市的人口;

这是我到目前为止有:

$upit = "SELECT"; 
$rezultat = mysql_query($upit); 
{ 
} 

一个MySQL能够解决这个问题,或者我也需要使用PHP?我将如何做到这一点?

回答

1

这确实是SQL 101的东西,我建议你做大量的阅读

SELECT CountryCode, 
     COUNT(Name) as Cities, 
     SUM(Population) as Population 
    FROM <tablename> 
GROUP BY CountryCode 
+0

我认为他想要按国家代码计算(ESP中的#个城市,UKR中的#个城市等)。GROUP BY Name将给他重复的名称值。 – 2013-04-10 16:25:03

+0

@David已经完成 – 2013-04-10 16:26:05

0

这是使用简单的MySQL聚集作业SUM()COUNT()aggregate funcions

$sql = 'SELECT 
    CountryCode, 
    COUNT(ID) as numCities, 
    SUM(Population) as totalPopulation 
    FROM Cities 
    GROUP BY CountryCode'; 
1

如果我没有理解正确地说,这个查询将给出一个基于国家的城市计数:

SELECT COUNT(*) AS CityCount, CountryCode, SUM(Population) AS CountryPopulation 
FROM myTableName 
GROUP BY CountryCode 

根据您的评论,这里是你如何能做到这跨多个表:

SELECT City.COUNT(*) AS CityCount, Country.LocalName, City.SUM(Population) AS CountryPopulation 
FROM City, Country 
GROUP BY City.CountryCode 
+0

Txank伴侣这个作品像魅力,你能帮我多一点,我只有一张桌子,我有加入获得所有的结果。 [link] http://www.clubmadam.com/country.jpg 第一张桌子是CITY,第二张桌子是COUNTRY,当有人问城市名字时我需要,必须有该国家的多少城市,以及人口所有城市,提前txanks – 2013-04-10 17:09:13

+0

我更新了答案。它应该工作,但如果你有问题,你可以问。 – 2013-04-10 18:15:42

0
$upit = "SELECT COUNT(ID) AS cities, SUM(Population) AS population, ContryCode FROM table GROUP BY CountryCode"; 
$result = mysql_query($upit); 
while ($data = mysql_fetch_object($result)) { 
    // $data->cities is the number of cities and $data->population the sum of people and $data->CountryCode the country code 
} 
0

在国家代码城市

$upit = "SELECT COUNT(DISTINCT CountryCode) FROM table_name 
$num_rows = mysql_num_rows($upit); 
echo "$num_rows Rows\n"; 

汇总人口的所有城市的计数在国家代码

请参阅@Mark Ba​​ker回答