|
|
|
| в основном используют такую структуру
id pid name
про это все ясно.
+ есть таблица files
там указываем id из 1ой таблицы, чтоб указать в каком каталоге находится файл.
И сам вопрос
как теперь посчитать сколько ВСЕГО файлов в той или иной категории ..
допустим,
Игры (5000...)
- flash (400…)
- Настольные (200)
- Аркады (100)
…
И т.д.
|
Вот … я легко могу узнать сколько файлов находиться в той или иной директории.
А вот как узнать сумму файлов в выше расположенной директории?
т.е. когда в директории находится другая директория, а в ней еще файлы | |
|
|
|
|
|
|
|
для: а-я
(17.02.2009 в 23:22)
| | Вы же все равно рекурсивный обход будете делать на одном из этапов.
В нем можно посчитать суммы. | |
|
|
|
|
|
|
|
для: Trianon
(17.02.2009 в 23:53)
| | что-то не понял. как именно лучше сделать? | |
|
|
|
|
|
|
|
для: а-я
(18.02.2009 в 00:04)
| | Как Вы делаете вывод всех категорий и подкатегорий? | |
|
|
|
|
|
|
|
для: Trianon
(17.02.2009 в 23:53)
| | А я бы, наверное, ввел дополнительное поле с количеством, которое изменял при добавлении/удалении... и рекурсию бы вынес целиком в php... чай список категорий не мегабайт весит... тогда бы и вовсе можно было ограничиться одним запросом. | |
|
|
|
|
|
|
|
для: Loki
(18.02.2009 в 10:21)
| | для этого не нужно вводить доп.поле с количеством.
Само собой, запрос один, а рекурсия уже потом.
примерно как здесь | |
|
|
|
|
|
|
|
для: Trianon
(18.02.2009 в 10:27)
| | Спасибо... но что я никак в один запрос не могу уложиться...
<?
$sql = 'SELECT `id`, `pid`, `name` FROM `tbl`';
$MS = mysql_query($sql) or die(mysql_error());
while($R = mysql_fetch_assoc($MS))
$_R[$R['id']] = $R;
$sql = 'SELECT `category`, COUNT(`category`) AS `count` FROM `files` GROUP BY `category`';
$MS = mysql_query($sql) or die(mysql_error());
while($R = mysql_fetch_assoc($MS))
$_R[$R['category']]['count'] = $R['count'];
?>
|
получаю что вроде
[1] => Array
(
[id] => 1
[pid] => 0
[name] => FLASH
)
[2] => Array
(
[id] => 2
[pid] => 1
[name] => Онлайн
)
[3] => Array
(
[id] => 3
[pid] => 2
[name] => Драки
[count] => 8
)
....
|
теперь надо потеть с массив, чтоб
связать с переменной $pid и собрать все счетчики. | |
|
|
|
|
|
|
|
для: а-я
(18.02.2009 в 20:37)
| | а зачем обязательно укладываться в один запрос? | |
|
|
|
|
|
|
|
для: Trianon
(18.02.2009 в 20:39)
| |
автор: Loki (18.02.2009 в 10:21)
А я бы, наверное, ввел дополнительное поле с количеством,
которое изменял при добавлении/удалении...
и рекурсию бы вынес целиком в php... чай список категорий не мегабайт весит...
тогда бы и вовсе можно было ограничиться одним запросом.
автор: Trianon (18.02.2009 в 10:27)
для этого не нужно вводить доп.поле с количеством.
Само собой, запрос один, а рекурсия уже потом.
примерно как здесь
|
Тут речь об одном запросе. =)
Вот и хотел вписаться в один запрос.. | |
|
|
|
|
|
|
|
для: а-я
(18.02.2009 в 20:47)
| | имелось в виду, что число запросов не равно числу узлов дерева, как это, например, на этом форуме происходит.
Ничего зазорного в том, чтобы считать дерево одним запросом, а аналитику по числу файлов - другим, нету. | |
|
|
|
|
|
|
|
для: а-я
(18.02.2009 в 20:37)
| | чтот никак не могу придумать..
пытаюсь через foreach перебрать, но никак. | |
|
|
|