2016-05-29 18 views
1

私は2つのテーブルを持っています.1つは都市(IDと都市名)と1つの都市(city_idなど)の写真です。SQL left joinは多くの代わりに1つの行を返します

私はシビウと呼ばれる都市を探しています。それは3つの結果を返すはずです。なぜなら、そのような都市がテーブル(Miercurea Sibiului、Sibiu、Poiana Sibiului)に多くありますが、それは1つしか返しません。

また、メモとして、timeline_elementsにはまだ市の写真がありません。

SELECT cities_countries.*, COUNT(timeline_elements.city_id) as number_of_photos 
FROM cities_countries 
LEFT JOIN timeline_elements on (cities_countries.id = timeline_elements.city_id) 
WHERE cities_countries.name LIKE '%Sibiu%' 

答えて

1

GROUP BYを追加しても、明示的にcities_countriesテーブルのすべての列名を言及。私はこれらがcities_countriesテーブルの列だと考えています。 id, city_id, city_name

読みやすくするために、テーブルごとに別名を設定してください。

SELECT C.id, C.city_id, C.city_name, .... 
     , COUNT(T.city_id) as number_of_photos 
FROM cities_countries C 
LEFT JOIN timeline_elements T ON C.id = T.city_id 
WHERE C.name LIKE '%Sibiu%' 
GROUP BY C.id, C.city_id, C.city_name, .... 
+0

これはうまくいきましたが、私は間違ったことを理解していません。あなたは説明する時間を取ることができますか?ありがとうございます – SimeriaIonut

+0

@SimeriaIonut [集計関数](https://msdn.microsoft.com/en-IN/library/ms173454.aspx)計算を実行し、必要な残りの列を返す場合は単一の値だけを返します。 GROUP BYを追加してください。したがって、SELECTで述べた列は、集約列名を除いてGROUP BYに含める必要があります – Arulkumar

関連する問題