2013-04-10 87 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回答