Комментарии 16
Начните отсюда: http://dev.mysql.com/doc/refman/5.0/en/c…
Там также есть небольшие примеры.
Там также есть небольшие примеры.
Не используйте костыли. Попробуйте nested sets.
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Сильно подозреваю, что автору стоит ознакомится с азами SQL, в частности, с выборками из нескольких таблиц. Неужто задачи настолько нетривиальные, что базовые средства не помогают?
НЛО прилетело и опубликовало эту надпись здесь
Может, заодно и вьюшки (VIEWs) посмотрите? Тоже пригодится
MySQL Stored Procedure Programming By Steven Feuerstein, Guy Harrison
Хранимые процедуры не сильно облегчат возникшую у вас проблему, а если хостинг ещё и покупной, то про хранимки можно забыть. Я лично стараюсь избегать рекурсии следующим образом:
Допустим есть список категория следующего вида:
Id
parentId
Есть товар который имеет Id категории. Необходимо, по какой то выбранной категории выводить товары всех подкатегорий. Решение очевидно – рекурсия на стороне php или mysql. Это можно обойти если использовать дополнительную колонку в таблице категорий которая имеет в своём значении перечень всех подкатегорий по отдельной категории, то есть:
Id
parentId
childIds // 10,12,23,19
То есть необходимо однажды выполнить рекурсивный запрос для поиска всех Id подкатегория по конкретной категории и сохранить. Дальше просто. Изначальная проблема решается 2-мя запросами. Первым достаём значение childs, вторым получаем все товары
Select childsId from category where Id=10;
Select * from product where category id in (childsId);
Допустим есть список категория следующего вида:
Id
parentId
Есть товар который имеет Id категории. Необходимо, по какой то выбранной категории выводить товары всех подкатегорий. Решение очевидно – рекурсия на стороне php или mysql. Это можно обойти если использовать дополнительную колонку в таблице категорий которая имеет в своём значении перечень всех подкатегорий по отдельной категории, то есть:
Id
parentId
childIds // 10,12,23,19
То есть необходимо однажды выполнить рекурсивный запрос для поиска всех Id подкатегория по конкретной категории и сохранить. Дальше просто. Изначальная проблема решается 2-мя запросами. Первым достаём значение childs, вторым получаем все товары
Select childsId from category where Id=10;
Select * from product where category id in (childsId);
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
MySQL. Stored Procedures.