私はこのように構成された3つのテーブルがあります。PostgreSQLのクエリと3つの関連テーブルから配列を返す
都市
id city
1 London
2 Madrid
3 Paris
ユーザー
id name
1 Bob
2 John
3 Laura
cities_users(これをテーブルは前の両方のテーブルをリンクします)
id city_id user_id
1 1 1
2 2 2
3 1 3
4 3 3
この方法で、ユーザーがどこに住んでいたかを簡単に参照できます。 など。ここでは、ユーザー1(Bob)がロンドンに住み、ユーザー3(Laura)がロンドンとパリに住んでいたことがわかります。
私の質問は次のとおりです。この結果を得るにはどのクエリを実行する必要がありますか?
city_id city number_users users
1 London 2 Bob,Laura
2 Madrid 1 John
3 Paris 1 Laura
カウント部私は SELECT c.id, c.city, coalesce (aux.c_count,0) AS number_users FROM cities c LEFT JOIN (SELECT city_id, count(*) c_count FROM cities_users GROUP BY city_id) aux ON aux.city_id = c.id;
でそれを持っていると思うが、配列の一部は、私が解決するために管理しcan`t一つです。
私が作成しました:DB fiddle for this example
効率性と応答速度の両方において、絶対に信じられないほど!私はまだSQLとhavoの初心者ですので、学ぶのは大変です...今、私はupvoteを許可されていませんが、私はこのポストに戻ってあなたをアップルボートします。ありがとう! – Bob
あなたは歓迎されています、特に答えをテストするためのフィドルも含まれています。私はあなたが答えを受け入れることができると信じているので、未回答の質問を探している他のメンバーはこれを見ません。 –