Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2012, 16:40   #1
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию Счет строк.

Помогите составить запрос.
Таб катег:
PHP код:
id parentid     config
1      0                
2      0
3      2         1
4      2
5      4         1 
6      4
7      4 
Табл пост
PHP код:
id       categoru
1             5
2             7
3             1
4             2 

Как составить запрос на подсчет количества новостей в гл катег (индикатор config=1)
Поле categoru=полю id из таблиц пост. Хелп ничего не выходит.
Predator199 вне форума Ответить с цитированием
Старый 30.08.2012, 17:24   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

покажи как делаешь
ADSoft вне форума Ответить с цитированием
Старый 04.09.2012, 13:36   #3
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Я не помни все что я пытался тогда. Но вот что та вроде этого.

PHP код:
update category a 
inner join 
(select from category WHERE config=1b
inner join 
(select count(id) as count,category from postb1 
set a
.podshet=coalesce(b1.count,0WHERE config=
Что не так здесь?

Последний раз редактировалось Predator199; 04.09.2012 в 13:38.
Predator199 вне форума Ответить с цитированием
Старый 06.09.2012, 15:24   #4
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Вроде так получилось, но не так сгруппировал.
PHP код:
 update category a 
inner join 
(
select count(id) as count from post p where category in(
(
select id from category where
parentid in
(select id from category where config=1 group by config)

))
b  
set a
.podshet=coalesce(b.count,0WHERE config=
Подсчет ведется из 1 попавшейся записи из таб категории. Результат выдает правильный но этот результат и у остальных категорий.

Последний раз редактировалось Predator199; 06.09.2012 в 16:59.
Predator199 вне форума Ответить с цитированием
Старый 06.09.2012, 16:59   #5
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
Смущение

Хелп........
Predator199 вне форума Ответить с цитированием
Старый 06.09.2012, 17:06   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

как показывает опыт ... у вас изначально неверно спроектированы БД... потому и проблемы. Объясните по человечески что хотите, что есть и что нужно получить
ADSoft вне форума Ответить с цитированием
Старый 06.09.2012, 18:05   #7
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Что хочу получить в результате:
Подсчитать сколько новостей в категории(и взятые подкатегори) которые отмечены config=1. И записать результат.
PHP код:
update category a                                                             //записываем таблицу.
inner join (
select count(id) as count from post p where category in(  // считаем скок новостей (category-id категории)
(select id from category where parentid in                        // берем id субкатегории
(select id from category where config=1 group by config)  //берем id категории config=1
))
b  
set a
.podshet=coalesce(b.count,0WHERE config=
Дошел до того, что подсчет правильный. Записывает данные тоже правильно. Проблема в том что подсчет идет только по первой попавшейся записи из таблицы категории (когда config=1). Собственно записывает он результат один и тот же (в строки имеющие config=1)
group by config -группировка помогла хоть как то разделить. То есть не общий результат всех новостей когдп категории с config=1.

Последний раз редактировалось Predator199; 06.09.2012 в 21:13.
Predator199 вне форума Ответить с цитированием
Старый 06.09.2012, 21:12   #8
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Подскажи пожалуйста.
Predator199 вне форума Ответить с цитированием
Старый 07.09.2012, 16:43   #9
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Если по вашему бд не так спроектирована, тогда как еще сделать подсчет новостей в гл категориях и записать результат в бд.
Predator199 вне форума Ответить с цитированием
Старый 07.09.2012, 16:57   #10
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

в форумах вот например организовано так, что при каждом добавлении/удалении новости (или перемещении по дереву каталога) - в отдельном поле категории учитывается кол-во постов.....

если же все таки динамически хотите - нужно формировать массив 1-м запросом
Код:
SELECT id, category FROM CATALOG
, а потом в PHP(рекурсивно) из этого массива получать все номера категорий вложенных - например (1,4 ,6 ,7 ,8, 55) - тогда подсчет кол-ва новостей будет так -
Код:
SELECT COUNT(*) AS SUMM FROM POST WHERE id_category in (1, 4, 6, 7, ,8, 55)
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СЧЕТ Макавели Microsoft Office Excel 2 28.02.2012 15:53
счет ячеек санек1980 Microsoft Office Excel 3 12.01.2012 12:19
Счет если Dafna696 Microsoft Office Excel 12 25.10.2011 21:14
счет строк диапазона с форматом текстовый Sergey112233 Microsoft Office Excel 9 05.03.2011 10:14
Счет Alex_sim Общие вопросы C/C++ 4 10.06.2010 11:28