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

誰か提案?

4

2 に答える 2

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*/
于 2012-06-29T11:50:33.047 に答える
0

私の SQL は少しさびていますが... GROUP BY はどうですか?

私が見つけた構文は次のとおりです。

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name

あるいは、このページの最後に、素人の言葉で説明があります。

これが役立つことを願っています!

于 2012-06-29T11:58:32.873 に答える