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

Подсчет записей в рубриках одним запросом

23.04.2009, 23:31. Показов 1890. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ! Подскажите пожалуйста как правильно сделать подсчет записей в рубриках, вот пример одного сайта http://www.ukrbiznes.com/boardind.php

как думаете, как они это делают?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2009, 23:31
Ответы с готовыми решениями:

Выборка из БД одним запросом
Всем доброго времени! У меня возник такой вопрос, есть 3 таблицы в одной базе как сделать выборку одним разом, где поля в 1 тб: id,...

Вставка одним запросом
Люди помогите память отшибло, вот так неправильно: for ($i = 0; $i < 300; $i++){ mysqli_query($link, "INSERT INTO `articles`...

Вставка нескольких строк одним запросом
Подскажите, как нужно формировать запрос к бд, чтобы вставить много строк с помощью одного запроса? Нужно вставить такие данные: ...

9
 Аватар для Ceran
172 / 101 / 10
Регистрация: 22.02.2009
Сообщений: 440
24.04.2009, 03:08
Выбирают из базы данных количество сообщений для той или иной темы. Чё тут непонятного?
0
0 / 0 / 0
Регистрация: 23.04.2009
Сообщений: 14
24.04.2009, 10:46  [ТС]
Цитата Сообщение от Ceran Посмотреть сообщение
Выбирают из базы данных количество сообщений для той или иной темы. Чё тут непонятного?
Да, а если рубрик огромное количество, на каждую делать SELECT COUNT?
0
 Аватар для Ceran
172 / 101 / 10
Регистрация: 22.02.2009
Сообщений: 440
24.04.2009, 20:42
Цитата Сообщение от 15828 Посмотреть сообщение
Да, а если рубрик огромное количество, на каждую делать SELECT COUNT?
Зачем для каждой?
Это же реляционная база. Она поддерживает многотабличные запросы.
Например. Есть директории с файлами. У директорий и файлов есть имена, эти имена хранятся в базе данных.
Пусть таблица директорий выглядит следующим образом:
SQL
1
2
3
CREATE TABLE `dir` (`dirId` INT(11) NOT NULL AUTO_INCREMENT ,
             `dirName` VARCHAR(255) NOT NULL ,
              PRIMARY KEY (`dirId`) );
где dirId - уникальный идентификатор каждой директории
dirName - имя директории
И есть таблица файлов, пусть она выглядит так:
SQL
1
2
3
4
CREATE TABLE `file` (`fileId` INT(11) NOT NULL AUTO_INCREMENT ,
             `dirId` INT(11) NOT NULL ,
             `fileName` VARCHAR(255) NOT NULL ,
              PRIMARY KEY (`fileId`) );
где fileId - уникальный идентификатор каждого файла
dirId - идентификатор каталога, соответствующий первичному ключу таблицы
каталогов
fileName - имена файлов

Если теперь заполнить эти 2 таблицы данными, например, так:
Таблица директорий:
SQL
1
2
3
INSERT INTO `dir` VALUES (1, 'Первый каталог');
INSERT INTO `dir` VALUES (2, 'Второй каталог');
INSERT INTO `dir` VALUES (3, 'Третий каталог');
Таблица файлов:
SQL
1
2
3
4
5
6
7
8
9
10
INSERT INTO `file` VALUES (1, 1, 'Файл первого каталога №1');
INSERT INTO `file` VALUES (2, 2, 'Файл второго каталога №1');
INSERT INTO `file` VALUES (3, 2, 'Файл второго каталога №2');
INSERT INTO `file` VALUES (4, 3, 'Файл третьего каталога №1');
INSERT INTO `file` VALUES (5, 1, 'Файл первого каталога №2');
INSERT INTO `file` VALUES (6, 2, 'Файл второго каталога №3');
INSERT INTO `file` VALUES (7, 3, 'Файл третьего каталога №2');
INSERT INTO `file` VALUES (8, 3, 'Файл третьего каталога №3');
INSERT INTO `file` VALUES (9, 2, 'Файл второго каталога №4');
INSERT INTO `file` VALUES (10, 2, 'Файл второго каталога №5');
То многотабличный запрос выводящий имена директорий и количество файлов в каждой из них может выглядеть так:
SQL
1
2
3
4
5
SELECT COUNT(file.fileId) AS COUNT, dir.* 
  FROM `file`, `dir` 
  WHERE file.dirId = dir.dirId 
  GROUP BY `dirId` 
  ASC
Если подключить сюда PHP то можно получить такой результат:
Первый каталог(2)
Второй каталог(5)
Третий каталог(3)

Что, собственно и требовалось.
Надёюсь понятно объяснил?

Кстати, совершенно не нужно следить за категорими и количеством файлов в каждой из них. И уж тем более совершенно не нужно "на каждую делать SELECT COUNT". Программа сама всё может вывести. Для добавления нового каталога и файлов в него достаточно 2 действия:
1. Создать каталог (Естественно как-то его назвать) в таблице каталогов
2. Создать файлы (количество значения не имеет) в таблице файлов и присвоить параметру dirId соответствующий номер из таблицы директорий.
1
0 / 0 / 0
Регистрация: 23.04.2009
Сообщений: 14
24.04.2009, 23:43  [ТС]
Огромнейшее спасибо за содержательный ответ.
Подобного не видел. Вот только не могу правильно составить запрос если бы список директорий хранился бы не в базе а в массиве.

Очень буду благодарен за ответ!!
0
 Аватар для Ceran
172 / 101 / 10
Регистрация: 22.02.2009
Сообщений: 440
25.04.2009, 10:26
Нифига не понял... В каком массиве? Зачем в массиве?
0
0 / 0 / 0
Регистрация: 23.04.2009
Сообщений: 14
26.04.2009, 00:58  [ТС]
у меня рубрики каталога находятся в массиве а не в базе, в базе только ссылка на каталог (dirId)

PHP
1
2
3
$dir[1] = "Каталог1";
$dir[2] = "Каталог2";
$dir[3] = "Каталог3";
0
 Аватар для Ceran
172 / 101 / 10
Регистрация: 22.02.2009
Сообщений: 440
26.04.2009, 02:43
А при чём тут тема поста?
0
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
26.04.2009, 10:24
может ченить типа такого нужно?:
SQL
1
... = "SELECT COUNT(*) FROM table_name GROUP BY dirId HAVING dirId IN (". JOIN(',', $dir) .")";
ну этот запрос помоему неправильный, но вроде нужно в эту сторону смотреть (GROUP BY ... HAVING)
0
0 / 0 / 0
Регистрация: 23.04.2009
Сообщений: 14
27.04.2009, 11:19  [ТС]
Спасибо всем, решение нашел сам

SQL
1
2
3
SELECT razdel, COUNT(id) AS COUNT
  FROM `products` 
  GROUP BY `razdel`
где razdel это номер каталога, список каталогов находятся в массиве. Таким образом с помощью цикла формирую массив с цифрами.

Все оказалось просто
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2009, 11:19
Помогаю со студенческими работами здесь

Получить из БД все таблицу одним запросом и сортировать используя PHP
Добрый день! Возникла вот такая ситуация: Я одним запросом получаю все строки таблицы , в которой к меня записано несколько категорий ...

Подсчет количества записей в БД
Имеется таблица с заказами, в которой дата заказа сохраняется в UnIX формате Необходимо подсчитать кол-во заказов за каждый день. Каким...

Выборка одним запросом
Не могу сообразить как сделать выборку такого рода одним запросом. Есть две таблицы: chases_1 и chases_2. Поля у них разные, но одно...

Несколько данных одним запросом
Добрый день Имеется таблица пользователей. Мне надо вывести из нее информацию: 1. Сколько всего пользователей. SELECT COUNT(*) FROM...

вывод 2х столбцов БД одним запросом
Всем привет! Начал изучать php, добрался до SQL. СтоИт такая задача: В таблице img хранятся данные о картинках из двух папок...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru