Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/63: Рейтинг темы: голосов - 63, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10

как подсчитать количество строк в запросе средствами php

19.11.2012, 21:26. Показов 12347. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как мне узнать количество строк в бд припомощи php. Я знаю что это можно делать при помощи msqli запроса с условием, но мне надо выбрать всю таблицу user. И уже средствами php в зависимости от условия подсчитать количество строк. Как мне подсчитать допустим всех пользователей у которых в поле namber стоит значение 2. Просто у меня пользователи делятся на 10 групп и вот мне надо подсчитать сколько пользователей в каждоу группе.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2012, 21:26
Ответы с готовыми решениями:

Подсчитать количество строк в таблице в запросе
всем привет давно спрашивал но забыл ответ:) поэтому еще раз есть запрос " выбрать 1,2,3 поместить вт1 объединить ВСЕ ...

Подсчитать количество строк и ввести данные в другие ячейки желательно средствами VBA
Есть файл в котором приходят записи оражевого цвета. Каждый раз файл приходит с разным количеством строк. Их необходимо...

Как подсчитать количество записей в запросе.
В отчете могу, а в запросе нет. Чтобы в поле "KolZap" запроса, появилось количество записей в нем. <kfujlfh./

19
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.11.2012, 21:34
Заносите всё в массив и методом перебора массива считаете.
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10
19.11.2012, 21:58  [ТС]
А можно пример пожалуйста, я не силен в php.
0
1 / 1 / 0
Регистрация: 15.06.2011
Сообщений: 17
19.11.2012, 22:51
ну примерно так
PHP
1
2
3
4
$sql = "SELECT *
    FROM users";
    $result  = mysql_query($sql) or die (mysql_error());
    $row = mysql_fetch_assoc($result)
ну а дальше подсчитываешь массив $row,
только советую заместо звездочки перечислить через запятую все поля которые нужно выбрать
Удачи
0
31 / 31 / 2
Регистрация: 06.08.2012
Сообщений: 155
19.11.2012, 23:07
Если есть первичный ключ, например id, то можно делать так:
PHP
1
$mysqli->query("SELECT `id` FROM `users` GROUP BY `id` DESC LIMIT 1");
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10
19.11.2012, 23:21  [ТС]
Как составить запрос я то знаю у меня там еще два условия, я и про запрос ничего не писал. Я не знаю как в массиве это все обрабатывать именно php напишите пожалуйста для примера, а там я разберусь, наверное.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
19.11.2012, 23:33
А где код выбора из бд? Какими функциями вы пользуетесь? Как сказать как подсчитать если не известно что имеется


Цитата Сообщение от byrenka Посмотреть сообщение
но мне надо выбрать всю таблицу user.
Если это вам лишь для подсчёта, то это очень не оптимальный способ. А если пользователей будет 1000? А если 10000? А если больше? В конце концов это положит сервер в зависимости от характеристик и конфигурации.
Для подсчёта в mysql есть специальные функции, почему бы не считать ими?


Цитата Сообщение от byrenka Посмотреть сообщение
Просто у меня пользователи делятся на 10 групп и вот мне надо подсчитать сколько пользователей в каждоу группе.
Что мешает посчитать это так
SQL
1
SELECT COUNT(1) FROM `users` GROUP BY `group_id`
Без лишних вытягиваний данных и в сотни раз быстрее будет работать
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10
20.11.2012, 00:37  [ТС]
у меня есть таблица user, каждому пользователю присваевается номер группы, групп потом может быть и больше. Мне кажется, мене затратно будет сделать один запрос к бд, тоесть выбрать все данные
SQL
1
2
$sql = "SELECT `group`
    FROM `user`";
и уже при помощи php сделать перебор и подсчитать количество для каждой группы. А так получается делать 10 запросов к базе
SQL
1
2
$sql = "SELECT `group`
    FROM `user` WHERE `namber` = '1' ";
. Правда у меня не все пользователи проходят как я уже и говорил, в запросе будет еще 2. Если я вас не правильно понял извеняйте.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
20.11.2012, 00:45
Цитата Сообщение от byrenka Посмотреть сообщение
Мне кажется
Вот именно. Вам кажется.

Цитата Сообщение от byrenka Посмотреть сообщение
А так получается делать 10 запросов к базе
Где 10 запросов? Я вам сделал 1-им запросом.
Можете добавить туда вывод ID группы, или с помощью JOIN подцепить название группы.
Что такое namber и group? опишите точнее что вам нужно посчитать?
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10
20.11.2012, 01:02  [ТС]
Мне надо вывести на одной страничке сколько пользователей есть в каждой группе. У меня в таблице user есть поле group (namber и group - это одно и тоже, я просто перепутал с другой таблицей). В поле group может быть значение от 1 до 10. Мне надоподсчитать сколько пользователей имеет в поле group еденицу, сколько пользователей имеет в поле group двойку и т.д до десяти и вывести это все на экран. Я просто читал, что лучше делать один запрос, а потом извлеченные данные переберать, чем делать 10 запросов к базе слишком большая нагрузка будет, тем более эти данные будут на всех страницах сайта и получается,какую страничку мы бы не загружали всегда будет 10 запросов к базе, по мне это много. Какое у вас мнение?.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
20.11.2012, 01:16
Цитата Сообщение от byrenka Посмотреть сообщение
что лучше делать один запрос, а потом извлеченные данные переберать, чем делать 10 запросов к базе слишком большая нагрузка будет
Да, но.
Если один запрос выберет 100 000 строк.
Или сделать 10 запросов, которые выберут по 1 строке.
То лучше сделать 10 запросов.
Но я вам в третий раз напишу. У вас не будет 10 запросов! А только 1.

PHP
1
$sql = "SELECT `group`, COUNT(1) AS `count` FROM `user` GROUP BY `group`";
Этот запрос вернёт 10 строк для 10 групп.
В каждой строке будет 2 поля.
group - в котором будет ID группы
count - в котором будет количество пользователей

Если же у вас Имена групп хранятся тоже в бд, тогда можно сразу вытащить и имена групп из другой таблицы этим же запросом.
Предположим у вас таблица называется group, в которой есть id группы равное полю group из таблицы юзеров и name - в котором название группы.
PHP
1
2
3
4
$sql = "SELECT `u`.`group`, `g`.`name`, COUNT(1) AS `count`
    FROM `user` `u`
    JOIN `group` `g` ON `g`.`id` = `u`.`group`
    GROUP BY `u`.`group`";
у вас будет по мимо тех двух полей, ещё поле name с именем группы.
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10
20.11.2012, 17:31  [ТС]
А как тогда выводить эти десять строк из вашего запроса по отдельности
MySQL
1
$sql = "SELECT `group`, COUNT(1) AS `count` FROM `user` GROUP BY `group`";
Я, например, даже и несталкивался GROUP BY, я не имею даже представления как это сделать.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
20.11.2012, 18:12
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
mysql_connect(...ваши данные...);
mysql_query('SET NAMES utf8');
mysql_select_db('имя_бд');
 
$sql = "SELECT `group`, COUNT(1) AS `count` FROM `user` GROUP BY `group`"; 
$res = mysql_query($sql);
 
while($row = mysql_fetch_assoc($res))
{
    echo '<p>В группе ', $row['group'], ' - ', $row['count'], ' человек';
}
1
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10
20.11.2012, 22:11  [ТС]
У меня вопрос - как мне можно подсчитать и те группы пользователей в которых нет пользователей именно по очереди, понятно что если в цикле нет одной группы, значит количество пользователей равно нулю. То есть мне надо что бы в резултате цикла было что-то вроде этого
PHP
1
2
3
4
5
$group_1= 12;
$group_2= 9;
$group_3= 0;
$group_4= 4;
$group_5= 0;
Что бы я мог вставлять переменые с результатом куда мне надо, Как это можно сделать?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
20.11.2012, 22:19
А дайте структуру таблицы групп, хотя бы имя и как названа колонка с нмоером группы там.
Если таблица group и поле id то так
SQL
1
2
3
SELECT `g`.`id`, COUNT(`u`.`id`) AS `count` FROM `group` `g`
    LEFT JOIN `user` `u` ON `g`.`id` = `u`.`group`
    GROUP BY `g`.`id`
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10
20.11.2012, 22:54  [ТС]
Не мне не надо совмещать две таблицы. Зачем мне делать выборку по двум таблицам если мне нужно только число пользователей или только таким способом можно сделать. Хотя в итоге я смогу и присвоить каждой цифре название группы из бд. Структура у меня такая Таблица user в ней поле group и таблица group и в ней поля id b name_group. В общем запрос такой же и остается, если я правильно вас понял.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
20.11.2012, 23:05
У Вас таблица знает только тех группах, которые в ней есть.
Как можно не обращаясь вообще к таблице групп, узнать какие есть ещё группы которых нет в таблице юзеров? Да не как.
Придётся объединять. И это всё равно будет работать гораздо быстрее чем выборка всех юзеров из базы и потом в цикле в пхп подстчёт групп.
БД для этого и предназначена, что бы это делать. Так что смело юзайте этот запрос.
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10
22.11.2012, 21:51  [ТС]
У меня еще один вопрос. Как мне сделать запрос что бы не только вывести в цикле переменные с числом пользователей, но и вывести переменные с названием групп, что бы мне не перепутать название группы и количество пользователей, да и потом легче будет добавлять новые группы, если понадобиться. У меня есть отдельная таблица под названием name_group в которой есть id группы и название ну а все остальные остается так же как вы написали в запросе
SQL
1
2
3
SELECT `g`.`id`, COUNT(`u`.`id`) AS `count` FROM `group` `g`
    LEFT JOIN `user` `u` ON `g`.`id` = `u`.`group`
    GROUP BY `g`.`id`
так как мне правильно составить запрос?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
22.11.2012, 22:04
Цитата Сообщение от byrenka Посмотреть сообщение
У меня есть отдельная таблица под названием name_group в которой есть id группы и название
А зачем отдельная таблица? Почему имя группы не хранится в таблице group?
SQL
1
2
3
4
SELECT `g`.`id`, COUNT(`u`.`id`) AS `count`, `ng`.`name` FROM `group` `g`
    LEFT JOIN `user` `u` ON `g`.`id` = `u`.`group`
    JOIN `name_group` `ng` ON `g`.`id` = `ng`.`id`
    GROUP BY `g`.`id`
0
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 10
22.11.2012, 23:15  [ТС]
Каждый пользователь может выбрать основную группу которая записывается в таблицу user, и несколько вспомогательных. Данные об основных группах встречаются очень часто и по этому они находятся в user, а вот вспомогательные редко и по этому я их вынесу в отдельную таблицу а name_group будет их объеденять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2012, 23:15
Помогаю со студенческими работами здесь

Как средствами VBA подсчитать количество листов которое будет печататься?
Как средствами VBA подсчитать количество листов которое будет печататься? т.е. на экране отображается допустим 3 листа, это видно, но...

Access: Как узнать количество строк в запросе?
Dim rst as object Set rst = docmd.currentdb.openrecordset(&quot;Select * From Клиенты&quot;) 'перехожу на последнюю запись rst.movelast ...

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

Как подсчитать количество Х строк в файле
Есть одна проблемка: Пытаюсь сделать так: Делаю считывание с файла. Файл такого образца, примерно... function olen takes nothing...

Как подсчитать количество строк из запроса?
Сделал запрос из БД Access . Как можно количество строк, которое вышло при запросе записать в переменную?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru