![]() |
0 Всего найдено: 2
bednyakovf
Сообщение
26/03/2013 17:04
Копия темы
написать сложный MySQL запрос Здравствуйте... Помогите пожалуйста.... Есть таблица "an_category_sort" с 2 полями "category_parent_id" и "category_child_id" я думаю понятно что здесь указаны вложенности категорий... Вложеностей может быть от 2 до 10... Т.е. много вложенных категорий Также есть таблица "an_category_product" с полями "category_id" и "product_id" т.е тут указывается какой продукт связан с какой категорией Задача вот в чём: вывести все категории category_parent_id=0 НО так чтобы проверить выводить лишь те категории, в которых содержатся продукты... И проблема в том, что категория может и не содержать продукты, но вложенная в неё (то есть она уже как category_parent_id) категория СОДЕРЖИТ вот и нужно её тоже вывести... определенная категория с category_parent_id=0 не содержит продуктов, первая вложенность категорий в нее не содержит, а вторая вложенность содержит ВОТ такую НАДО выводить... Я сделал только для первой вложенности SELECT * FROM an_category_sort AS SORT WHERE category_parent_id=0 AND (SELECT count(category_id) FROM an_category_product WHERE category_id=SORT.category_child_id )>0 а как для вложенных проверить???
1site
Сообщение
26/03/2013 17:21
Копия темы
0
Насколько я помню, штатных средств для работы с деревьями в mysql нет. Использовать что-то готовое не знаю. Само простое, как бы я сделал, это добавил бы колонку 'product_count' или 'product_having' в таблицу категорий. И написал бы триггер на добавление/удаление, который идет циклом, до тех пор пока не упрется в category_parent_id is null и прибавляет/убавляет кол-во товаров в категориях, которые задел. Соответственно, select после этого становится совсем легкий. Этот метод довольно универсален. |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |