SQL: порядок, сколько строк (с помощью COUNT?) - PullRequest
1 голос
/ 19 октября 2011

Для SMF я делаю список для членов моего клана (пожалуйста, не приходите с «Вы должны спросить SMF», потому что это совершенно не имеет значения; это просто контекстная информация).

Мне нужно выбрать всех участников (из smf_members ) и упорядочить их по количеству разрешений, которые они имеют в smf_permissions (чтобы скрипт мог определить, кто выше вранг).Вы можете получить количество разрешений, используя: COUNT(permission) FROM smf_permissions.

Я сейчас использую этот SQL:

SELECT DISTINCT(m.id_member), m.real_name, m.date_registered  
FROM smf_members AS m, smf_permissions AS p  
WHERE m.id_group=p.id_group  
ORDER BY COUNT(p.permission)

Однако, это возвращает только одну строку!Как вернуть несколько строк?

Cheers, Aart

1 Ответ

5 голосов
/ 19 октября 2011

Вам нужен GROUP BY.Я также переписал с явным синтаксисом JOIN.Возможно, вам придется изменить значение на LEFT JOIN, если вы хотите включить участников с нулевыми разрешениями.

SELECT m.id_member,
       m.real_name,
       m.date_registered,
       COUNT(p.permission) AS N
FROM   smf_members AS m
       JOIN smf_permissions AS p
         ON m.id_group = p.id_group
GROUP  BY m.id_member,
          m.real_name,
          m.date_registered
ORDER  BY COUNT(p.permission)  
...