Hat jemand bereits eine SQL-Abfrage erstellt, um eine Liste von Benutzern (vielleicht die Top 10) anzuzeigen, sortiert nach der Gesamtzahl ihrer Badges?
Ich habe mich im Data Explorer umgesehen und die Tabelle „user_badges" betrachtet. Dort gibt es zwar die Spalten „user_id" und „badge_id", aber ich bin im SQL nicht so versiert, dass ich eine Zähl- oder Join-Abfrage erstellen könnte, um eine Top-10-Liste zu erzeugen.
-- [params]
-- int :posts = 100
-- int :top = 10
SELECT u.username, count(ub.id) as "Abzeichen"
FROM user_badges ub, users u, user_stats us
WHERE u.id = ub.user_id
AND u.id = us.user_id
AND us.post_count > :posts
AND (u.admin = 'f' AND u.moderator = 'f')
GROUP BY u.username
ORDER BY count(ub.id) desc
LIMIT :top
Ja. Viele Abzeichen können mehr als einmal gewonnen werden.
Schau dir das hier an, falls es genauer ist:
-- [params]
-- int :posts = 100
-- int :top = 10
SELECT u.username, count(ub.id) as "Badges"
FROM user_badges ub, users u, user_stats us, badges b
WHERE u.id = ub.user_id
AND u.id = us.user_id
AND b.id = ub.badge_id
AND us.post_count > :posts
AND (u.admin = 'f' AND u.moderator = 'f')
AND b.multiple_grant = 'f'
GROUP BY u.username
ORDER BY count(ub.id) desc
LIMIT :top