|
|
|
| у меня есть Дерево каталогов NESTED SETS
собственно, как выбрать список веток второго уровня, чтоб в результате получить еще и сколько в них товаров(товары в другой таблице ключ section_id) + сколько товаров во вложенных категориях, и сколько у них подкатегорий + сколько подкатегорий у этих подкатегорий(сколько вообще подкатегорий в этой ветке начиная с этой секции)
хм... помоему объяснил не очень хорошо... если что надо дообъяснять скажите...
Помогите пожалуйста, заранее спасибо :) | |
|
|
|
|
|
|
|
для: CrazyAngel
(18.07.2008 в 10:03)
| | вот составил запрос, который выбирает сколько ветки и сколько в них товаров, помогите доработать, чтоб еще выбиралось, сколько товаров в подкатегориях...
SELECT COUNT(`elements`.`id`) AS 'num', `elements`.`section_id`,`sections`.*
FROM `elements` right OUTER JOIN `sections`
ON `elements`.`section_id`=`sections`.`id`
WHERE `sections`.`parent_id`='1'
GROUP BY `sections`.`id`
|
| |
|
|
|
|
|
|
|
для: CrazyAngel
(18.07.2008 в 10:03)
| | Надо сообщить структуру таблицы.
Как минимум в той части, которая касается представления дерева (ключи, границы, имена, уровни)
А в идеале - привести фрагмент дампа, чтоб можно было проверить.
И еще надо исправить пост так, чтоб лента темы влезала в экран по ширине.
Вроде не новичок на форуме, userid старше моего, а такие ляпы, блин. | |
|
|
|
|
 1013 байт |
|
|
для: Trianon
(18.07.2008 в 13:41)
| | угу... давно я тут :) и давно не был ;)...
и так все по правилам, дамп в аттач? :)
думаю именя рядов понятны
rk - правый ключ
lk - левый ключ
сорри за ляпы ^^ | |
|
|
|
|
|
|
|
для: CrazyAngel
(18.07.2008 в 14:06)
| | Пока Вы отковыривали дамп, я нашел очень похожую тему.
http://softtime.ru/forum/read.php?id_forum=3&id_theme=55444
Тот же вопрос фактически. | |
|
|
|
|
|
|
|
для: Trianon
(18.07.2008 в 14:38)
| | спасибо :)
Есть еще проблема... не понимаю почему не получается выбрать еще и сколько товаров именно в этой ветке
SELECT `h`.*, COUNT(`p`.`id`) AS `cnt`,COUNT(`in`.`id`) AS `cnt_in` FROM `sections` `h`
JOIN `sections` `c` ON `c`.`lk` >= `h`.`lk` AND `c`.`rk` <= `h`.`rk`
LEFT JOIN `elements` `p` ON `p`.`section_id` = `c`.`id`
LEFT JOIN `elements` `in` ON `in`.`section_id` = `h`.`id`
WHERE `h`.`level` = 2
GROUP BY `h`.`id`, `h`.`name`
ORDER BY `h`.`lk`, `h`.`name`
|
cnt_in - кол-во товаров в ветке(исключая подветки) | |
|
|
|
|
|
|
|
для: CrazyAngel
(21.07.2008 в 07:33)
| | COUNT() считает не ветки и не товары. COUNT(), грубо говоря, считает строки табличного выражения.
Выражение у Вас одно. Строк, посчитанных что первым COUNT(), что вторым - одно и то же число. | |
|
|
|