Mysql, Возможная проблема Nested Category - PullRequest
5 голосов
/ 25 марта 2009

У меня вопрос к MySQL.

У меня есть приложение, которое я перевожу на PHP / Mysql из Coldfusion и MSSql.

Существуют категории и подкатегории (с явно неограниченными подкатегориями).

Каков наилучший способ собрать все записи в таблице продуктов с помощью навигационного идентификатора.

Есть две таблицы, с которыми я имею дело. Одна из них - это таблица «Продукты» (которая имеет nav_id, соответствующий --->), а другая - это таблица отношений категории, которая включает отношения «родитель-потомок».

По сути, я хочу запросить две таблицы, чтобы получить все продукты, связанные с навигационным идентификатором и подкатегориями этого навигационного идентификатора.

какие-либо идеи или направления? Я знаю, что это должно быть сделано. Думал, что ответ лежит во вложенном запросе, но не могу обернуться вокруг него.

Nav_table - содержит

ChildNavId      int(11)
ParentNavId     int(11)

Products_Table - содержит

productNavID    int(11) // productNavID contains the lowest level NavID 

Ответы [ 2 ]

5 голосов
/ 25 марта 2009

Существуют категории и подкатегории (с явно неограниченными подкатегориями).

Если из-за этого у вас есть сколь угодно много уровней вложения категорий, вы не можете получить их все одним запросом, используя модель схемы «родительская ссылка». Вам придется неоднократно запрашивать дочерние элементы каждой категории, которую вы нашли, рекурсивно, или просто продолжать делать все больше и больше самостоятельных объединений, пока вы не выберете наиболее глубоко вложенные элементы.

Для доступа с помощью одного запроса к иерархическим данным вам придется искать альтернативные способы структурирования схемы, в основном:

Любой или оба из этих подходов, в одном из их вариантов, могут работать для вас. (Обычно я получаю «Вложенные множества», чтобы получить явный порядок «от первого до последнего».)

0 голосов
/ 25 марта 2009

Звучит как работа для аккуратно написанного рекурсивного алгоритма, но, как сказал Алекс Тейлор, нам понадобится схема, которая будет вам полезна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...