2012-06-29 41 views
2

我有一個查詢可顯示測試數據庫中多個表的列。產出是來自世界各地的酒店及其相應的信息。我的搜索標準很簡單,沒有空白字段,我希望他們的電話號碼不是以+號開頭。根據國家/地區找到總計結果

它可以工作,但它顯示所有條目(像它應該)但是有可能只顯示找到的項目總數,例如,每個國家?例如,它在中國顯示5000條線,意大利3458條線,加拿大2050條線等。是否可以顯示發現的總量? 5000:中國 3458:意大利 2050年加拿大 等 等

我試過COUNT和HAVING,但到目前爲止還沒有爲我工作。我也在這裏查了幾個主題,但仍然沒有成功。這是我的查詢:

SELECT 
hotel.id HotelID, 
hotel.name Hotel_Name, 
hotel.tel_area Area_Number, 
hotel.tel Phone_Number, 
city.name City, 
region.name Region, 
country.name Country, 
country.id CountryID, 
country.continent Continent, 
hotel.web Website 

FROM mydata.hotel  as hotel 
JOIN mydata.city  as city  ON hotel.city = city.id 
JOIN mydata.region  as region ON region.id = city.region 
JOIN mydata.country as country ON country.id = region.country 

where hotel.tel not like '' 
and accos.tel not like '+%' 

order by country.name 

有人建議?

回答

2
SELECT 
country.name Country, 
COUNT(*) 
FROM mydata.hotel  as hotel 
JOIN mydata.city  as city  ON hotel.city = city.id 
JOIN mydata.region  as region ON region.id = city.region 
JOIN mydata.country as country ON country.id = region.country 

where hotel.tel not like '' 
and accos.tel not like '+%' 
GROUP BY Country 
/*an ORDER BY is not really needed in this case, in MySQL GROUP BY contains an implicit ORDER BY*/ 
+0

這實際上很有道理!我正在給它一個去..謝謝 – Jan

+0

我試過了,但它給了我一個錯誤在COUNT語句..看起來它不是註冊COUNT作爲語句。 SELECT country.name國家,COUNT(* \t錯誤代碼:1064.您的SQL語法有錯誤;請查看與您的MySQL服務器版本對應的手冊,以獲取在第3行'*'附近使用的正確語法。 我錯過了什麼? – Jan

+0

Count是一個標準的SQL函數,可能是複製粘貼錯誤嗎?我發現的唯一錯誤是,名爲accos的表在WHERE子句中引用,但在FROM子句中沒有引用。 – fancyPants

0

我的SQL有點生疏,但...... GROUP BY呢?

我發現的語法是:

SELECT column_name, aggregate_function(column_name) 

FROM table_name 

WHERE column_name operator value 

GROUP BY column_name 

另外,在這個page結束時,他們給在淺白的解釋。

我希望這有助於!

+0

我完全同意,我仍然在學習,所以這就是爲什麼;)感謝您的建議,我一定會給頁面閱讀! – Jan