私はauth.UserモデルのQuerySetを持っています。Django ORM注釈:ユーザクエリセットの最も一般的なグループ
知っておきたいこと:これらのユーザーを最も多く含むグループはどれですか。
例:
- G1:U1、U2、U3、U4
- G2:U1、U2
- G3:U1〜U4、U5、U6
- G4:U5、U6私は、これらのユーザーとの三つのグループを、持っていますU7
ユーザークエリセット:U1、U2 U3の
結果(カウント与えられたユーザークエリセットであるメンバー):
- G1:3
- G2を数える:1つの
- G4を数える:0
方法を数える2
ユースケース
各グループが持っているどのように多くのメンバーのユーザー名に「×」と表示します。
SQL
SELECT auth_group.id, auth_group.name,
(SELECT COUNT(auth_user_groups.id) FROM auth_user_groups WHERE
auth_user_groups.group_id = auth_group.id AND
auth_user_groups.user_id IN (SELECT auth_user.id FROM auth_user WHERE username LIKE '%x%')) AS user_cnt
FROM auth_group ORDER BY user_cnt DESC;
更新
グループg4
が一致するメンバーを持っていませんが、それは注釈付きクエリセットにする必要があります。
あなたの答えはうまくいきます。 ID: "auth_group"、 "auth_group"、 "auth_group"、 "auth_user_groups"、 "user_id" IN(SELECT U0。 "id" FROM "auth_user" U0 WHERE U0。 ID "=" auth_user_groups "。" group_id ")GROUP BY" auth_user_groups "(" auth_groups "。" id "=" auth_user_groups ")。 auth_group "。"id"、 "auth_group"。 "name" ORDER BY "user_cnt" DESC' – guettli