2010-12-29 9 views
4

Ich versuche, ORDER meint alle Kategorien und Unterkategorien in einer Hierarchie:Kategorie Hierarchie (in dieser Reihenfolge) mit PHP MySQL

Der wichtigste Punkt ist, wie sie von MySQL GEORDNETEN zu erhalten (mit POSITION Feld)

  • Cat A -> Position 10
    • Sub-Cat 1 -> Position 10
    • Sub_Sub_Cat 1 -> Position 20
      • Sub_Sub_Cat 2 -> Position 10
    • Sub_Cat 2 -> Position 30
  • Cat B -> Position 20
  • Kat. C -> Position 30

MySQL-Code:

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 ; 

Antwort

5

Sie wollen den Baum mit SQL zu durchqueren? Das ist mit dem Adjazenzlistenmodell nicht möglich, Sie müssen nested sets model verwenden. Dann kannst du einfach ORDER BY left den ganzen Baum in die richtige Reihenfolge bringen.

+0

Wow, das ist unglaublich cool. Ich kann nicht glauben, dass ich das vorher nie gesehen habe! Dies erklärt jedoch die seltsamen Felder 'lft' und 'rgt' in einigen Datenbanken;) –