Присоединиться к MYSQL (считать из одной таблицы и список из одной таблицы) - PullRequest
0 голосов
/ 31 августа 2018

у меня два стола,

  • Пользователь
  • Пожаловаться на пользователя

В таблице пользователей есть следующие столбцы,

userid , email , phone_number

В пользовательской таблице отчета есть следующие столбцы,

id , userid , report_user_id , reason

Итак, я хочу получить список пользователей с количеством отчетов, если счет равен нулю, то он должен быть с нулем.

Таблица пользователей,

userid | email         | phone_number
1      | abc@gmail.com | 12312312
2      | abcd@gmail.com | 112312312
3      | abc3@gmail.com | 112312312

Таблица пользовательских отчетов,

id     |userid | report_user_id | phone_number
1      | 2     |   3            | 12312312
2      | 3     |   2            | 112312312
3      | 1     |   2            | 112312312

Ожидаемый выход,

userid | email         | phone_number | report_count
1      | abc@gmail.com | 12312312     | 0
2      | abcd@gmail.com | 112312312   | 2
3      | abc3@gmail.com | 112312312   | 1

Здесь userid = 1 имеет нулевое количество отчетов, поэтому оно должно быть равно нулю (поскольку в столбце report_user_id нет записи 1), userid = 2 имеет 2 числа отчетов, поэтому оно должно быть 2, а userid = 3 имеет 1 число отчетов. так что должно быть ноль.

Я пробовал этот запрос, но не смог получить ожидаемый результат,

SELECT count(LRU.report_user_id) as report_count FROM `lickr_report_user` as LRU LEFT JOIN lickr_users as LU ON LU.userid = LRU.report_user_id GROUP BY LU.userid

1 Ответ

0 голосов
/ 31 августа 2018

Я думаю, вы изменили таблицу пользователей и отчетов в операторе соединения:

Вы также должны добавить IFNULL замену 0 на ноль в COUNT функции.

SELECT LU.userid, 
       LU.email, 
       LU.phone_number, 
       COUNT(IFNULL(LRU.report_user_id),0) as report_count 
FROM lickr_users as LU
LEFT JOIN `lickr_report_user` as LRU ON LU.userid = LRU.report_user_id 
GROUP BY LU.userid, LU.email, LU.phone_number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...