2010-12-29 1 views
4

Я пытаюсь ORDER мои все категории и подкатегории в иерархии:Категория иерархии (в указанном порядке) с помощью PHP MySQL

Главное в том, как получить их из MySQL упорядоченному (с использованием ПОЗИЦИИ поле)

  • кошке -> позиция 10
    • Суб-Cat 1 -> позиция 10
    • Sub_Sub_Cat 1 -> позиция 20
      • Sub_Sub_Cat 2 -> позиция 10
    • Sub_Cat 2 -> позиция 30
  • Кошка Б -> позиция 20
  • Cat C -> позиция код 30

MySQL:

CREATE TABLE IF NOT EXISTS `categories` (
    `category_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, 
    `position` smallint(5) unsigned, 
    `parent_id` mediumint(8) unsigned NOT NULL DEFAULT '0' 
    PRIMARY KEY (`category_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; 

ответ

5

Вы хотите перемещаться по дереву с помощью SQL? Это невозможно в модели списка смежности, вы должны использовать nested sets model. Тогда вы можете просто ORDER BY left, чтобы получить все дерево в правильном порядке.

+0

Ничего себе, это невероятно круто. Я не могу поверить, что никогда раньше этого не видел! Это объясняет странные поля «lft» и «rgt» в некоторых базах данных, хотя;) –

Смежные вопросы