Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
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 Копия темы
Насколько я помню, штатных средств для работы с деревьями в mysql нет. Использовать что-то готовое – не знаю.

Само простое, как бы я сделал, это добавил бы колонку 'product_count' или 'product_having' в таблицу категорий. И написал бы триггер на добавление/удаление, который идет циклом, до тех пор пока не упрется в category_parent_id is null и прибавляет/убавляет кол-во товаров в категориях, которые задел.

Соответственно, select после этого становится совсем легкий. Этот метод довольно универсален.
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"