Выберите и посчитайте для каждой записи в одном запросе - PullRequest
0 голосов
/ 07 июня 2018

У меня к таблицам базы данных: «пользователи» и «результаты».Я хочу просматривать пользователей из таблицы пользователей и подсчитывать конкретные записи каждого отдельного пользователя в результатах таблицы (для подсчета сыгранных игр и побед).Мой запрос:

$q = "SELECT *, (SELECT count(*)  
                 FROM users, results 
                 WHERE (results.u1 = users.id OR results.u2 = users.id) 
                 AND (results.p1 > 0 OR results.p2 > 0) 
                 AND gid = '$gid' AND users.gender = '$gender') as gp 
      FROM users LEFT JOIN results 
                               ON users.id = results.u1 
                                           || 
                                  users.id = results.u2 
      WHERE gid = '$gid' AND users.gender = '$gender' 
      GROUP BY users.id LIMIT 0, 9";

Это возвращает 9 пользователей, но "gp" показывает мне количество всех записей, но я хочу, чтобы часть gp подсчитывала только записи для каждого отдельного пользователя в цикле и ORDER по нему.

Можете ли вы помочь мне с этим запросом?СПАСИБО!

1 Ответ

0 голосов
/ 07 июня 2018

выберите идентификатор пользователя, создайте его псевдоним и используйте его в своем подзапросе

select user_id as userid  (select  count(*) from result where results.u2 = userid) as result_count  from users ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...