0

グループを持ち、グループがユーザーを持つことができるソーシャルモバイルアプリケーションを作成しています。すべてのグループとその中のユーザー数を取得するために、クエリを作成しようとしています。

注: グループに 0 ユーザーを含めることもできます。

グループにユーザーがいない場合でも、その情報を取得する必要があります。どうすればいいですか?私は試した:

Select *, count(ug.group_id) from groups g 
left join images i ON(g.group_image_id = i.image_id)
left join location l ON(g.group_location_id = l.location_id)
.
.
left join user_group ug on(ug.gorup_id = g.group_id)
group by ug.group_id; 

現在、このクエリでは、ユーザーがゼロのグループは表示されません。グループに0人のユーザーがいる場合でも、すべてのグループを表示するように変更するにはどうすればよいですか。

4

4 に答える 4

1

SELECT * と GROUP BY を使用することは、MySQL の忌まわしい行為です。あなたの場合、それ以来痛いようには見えず、image0:1の関係locationがあるようです。それは非常に悪い習慣です。group

ANSI に準拠したクエリの記述方法を次に示します。いくつかのテーブルを JOIN した結果セット全体とカウントが必要な場合は、カウント部分のみを式として追加します。

Select *, (select count(ug.group_id)
           from user_group ug
           where ug.gorup_id = g.group_id) GroupUserCount
from groups g 
left join images i ON(g.group_image_id = i.image_id)
left join location l ON(g.group_location_id = l.location_id)
.
.
于 2013-04-26T01:35:14.580 に答える
1

groupsテーブルからそれらをグループ化する必要があります

GROUP BY g.group_id
于 2013-04-26T00:26:57.257 に答える
0

次のようなものを探していると思います:

Select g.group_id,coalesce(users ,0)
from groups g 
  left join (select ug.gorup_id,count(*) users
from user_group ug
group by ug.gorup_id) s
on s.group_id = g.group_id

ユーザーのグループと数だけを知る必要がある場合は、例の他のテーブルは必要ありません。

于 2013-04-26T00:27:37.337 に答える