Как вывести список пользователей из таблицы mysql и посчитать количество пользователей в каждой группе?
Всем привет.
Кто знает как вывести список пользователей из таблицы mysql и посчитать количество пользователей в каждой группе? пожалуйста помогите разобраться, я новичок.
В БД имеется 2 таблицы: groups и users
Выполняю 2 запроса:
$groups = "SELECT * FROM groups";
$result1 = mysqli_query($db_connect, $groups);
$users = "SELECT COUNT(users.id) FROM users WHERE users.group IN (SELECT id FROM groups)";
$result2 = mysqli_query($db_connect, $users);
Пытаюсь сформировать таблицу для для раздела "Группы пользователей" в ПУ:
|
1 |
<table class="table"> <tbody> <tr> <th width="70px" class="border-end text-center">id</th> <th class="border-end">name</th> <th width="70px" class="text-center">count</th> </tr> while($count = $result2->fetch_assoc()) { $arraydata = implode(',', $count); } while($row = $result1->fetch_assoc()) { echo " <tr> <td class="border-end text-center"> " . $row["id"] . " </td> <td class="border-end"> " . $row["name"] . " </td> <td class="border-end text-center"> " . $arraydata . " </td> </tr> "; } </tbody> </table> |
Прикрепляю скрин того что я хочу получить:
Дополнительно:
Содержание
Не используйте служебные и зарезервированные слова в качестве имён объектов (полей, таблиц и пр.). Лучше всего - переименуйте их.
По хорошему нужно вам составить 1 запрос, вместо 2ух.
Получаете список групп, потом через leftJoin делаете запрос к таблице пользователей и в селекте делаете сумму.
Примерно такой запрос:
|
1 |
SELECT groups.name, COUNT(users.id) as user_count FROM groups LEFT JOIN users ON groups.id = users.group GROUP BY groups.name |
Запрос не тестировал, могу в чём-то ошибаться.
- Огромное спасибо)
Кстати я до того как получил ваш ответ, задал этот вопрос GPT чату.
Он ответил:SELECT g.id, g.name, COUNT(u.id) AS user_count FROM
groupsg LEFT JOIN users u ON g.id = u.group GROUP BY g.id
Ответы:
|
1 |
WITH `cte` AS ( SELECT `group`, COUNT(*) AS `count` FROM `users` GROUP BY `group` ) SELECT `g`.`id`, `g`.`name`, IFNULL(`cte`.`count`, 0) AS `count` FROM `cte` RIGHT JOIN `groups` AS `g` ON `g`.`id` = `cte`.`group` |
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?



Для того чтобы вывести список пользователей из таблицы MySQL и посчитать количество пользователей в каждой группе, вам потребуется написать SQL запрос с использованием функции COUNT() и оператора GROUP BY.
Прежде всего, у вас должна быть таблица, содержащая информацию о пользователях, а также группы, к которым они относятся. Предположим, что у вас есть таблица с именем "users" и полями "id", "username" и "group_id".
Вот пример SQL запроса, который вы можете использовать для выполнения задачи:
Этот запрос выберет все уникальные значения group_id из таблицы "users" и подсчитает количество пользователей в каждой группе. Результат будет содержать два столбца: group_id и total_users.
Если вы хотите также вывести список пользователей в каждой группе, вы можете модифицировать запрос следующим образом:
Этот запрос добавляет еще один столбец "users_list", который содержит список имен пользователей в каждой группе, объединенных через запятую.
Таким образом, вы сможете вывести список пользователей из таблицы MySQL и посчитать количество пользователей в каждой группе, используя соответствующие SQL запросы.