我有兩個表 - countries
,tours
。從一個表中獲取數據列表,並從另一個表中獲取一些記錄數,是否可以在一個查詢中執行?
countries
具有字段(id
),(name
),(order
)
tours
具有字段(id
),(id_country
)...
我需要得到整個列表id
和name
從表countries
按照它們的順序排列,並且記錄的計數在表tours
中,其中tours
。 id_country
= countries
。 id
countries
。
也就是說,我需要得到這樣的名單
id name count_of_tours
1 France 15
2 England 22
.............................
是否有可能在一個查詢呢?
感謝很多
@Symon - 當你使用諸如COUNT(),SUM,MAX()等等「集合函數」時,你需要在COUNT計算中指明表示中斷/重置的列,所以SQL知道計算所有T. id條目並顯示相對於第一個C.id和C.name的計數,然後將其內部計數器重置爲0,並在C.id/C.name更改時重新開始計數。 GROUP BY子句用於識別需要停止計算一個國家/地區的一組記錄的變更點,保留該結果,重置計數器並開始計算下一個國家的下一組記錄 – 2010-09-25 11:54:05
非常感謝您的詳細解釋。這比許多教程要好得多:)但是爲什麼需要用兩個colomns對它們進行分組?與一個合作。 – Simon 2010-09-25 12:00:29
@Symon - 最新的MySQL版本似乎足夠聰明地認識到,C.id和C.name來自於國家表中的記錄SAE,所以它不是關鍵在GROUP BY同時列出,但較早版本的MySQL和其他數據庫並不一定是聰明,或寬容......所以這是一個很好的習慣引用在GROUP所有的非聚集列BY ......這樣一來,如果你決定它不會突然中斷查詢使用Oracle或Postgres作爲數據庫,或者將其託管在運行早期版本MySQL的服務器上 – 2010-09-25 12:04:33