0

リストと globals_lists の 2 つのテーブルがあります。globals_lists は、基本的に list_id を global_id 値に関連付けます。各ユーザーの関連付けられたリスト タイプの global_ids (つまり、globals_lists テーブル内の「manys」の数) の数を取得したいと考えています。

何かのようなもの:

select l.id, l.user_id, count(gl.global_id) as gl_count 
from   lists l, globals_lists gl 
where  l.list_type_id=10 and l.id=gl.list_id;

しかし、これは私に間違った情報を返しています。

4

3 に答える 3

1

追加:

GROUP BY l.id, l.user_id 

あなたのwhere条項の後。

がない場合、基本的には、グループ化の設定に関係なくGROUP BY、および結合条件を満たすすべての行をカウントするだけです。ユーザーごとのカウント集計->リストの組み合わせを実行していることを確認します。WHEREGROUP BY

于 2012-08-02T19:03:14.190 に答える
1
select l.id, l.user_id, count(gl.global_id) as gl_count 
from   lists l, globals_lists gl 
where  l.list_type_id=10 and l.id=gl.list_id
GROUP BY l.id, l.user_id;
于 2012-08-02T19:05:41.213 に答える
1

のような集計関数を使用する場合はcount、集計が動作するグループを指定する必要があります。MySQL ではこれは必要ありませんが、必要な場合は常に明確になります。

あなたの場合、探しているグループは です(user_id, list_id)。次のようなクエリを記述できます。

select  l.user_id
,       l.id
,       count(gl.global_id) as gl_count 
from    lists l
join    globals_lists gl 
on      l.id = gl.list_id
where   l.list_type_id = 10
group by
        l.user_id
,       l.id
于 2012-08-02T19:06:27.370 に答える