私は2つのテーブルを持っています。
_cities - id_city, city_name
properties - id_property, id_city, property_name
_
_cities.city_name
_を表示し、その横に[properties.count(id_city)]
を表示したい
NULL
の代わりにレコードが見つからない場合でもゼロを返すクエリを作成して、次のような結果を得るにはどうすればよいですか。
_London [123]
New York [0]
Berlin [11]
_
ここで、「ニューヨーク」は[0]であり、NULL
ではなく1ではありませんか?
外部結合を使用します。
select cities.city_name, count(properties.id_city)
from cities left join properties on cities.id_city = properties.id_city
group by 1
私はそれをテストしていませんが、以下はあなたのためにそれをするだろうと思います。秘訣は、1つのテーブルのプロパティ数を取得してから、そのテーブルを都市テーブルに左結合し、 [〜#〜] ifnull [〜#〜] 関数を使用してNULLを0に変換することです。
SELECT city_name, IFNULL(property_count, 0)
FROM cities
LEFT JOIN
(SELECT id_city, count(*) as property_count
FROM properties
GROUP BY id_city) city_properties
USING (id_city);
クエリ:
SELECT cities.*, COUNT(properties.id_city) as num
FROM cities
LEFT JOIN properties on cities.id_city=properties.id_city
GROUP BY cities.id_city
mySQLでそのように機能するかどうかは100%確実ではありませんが、必要な場所に0カウントを返す必要があります。