类别和子类别

时间:2011-12-29 22:48:25

标签: mysql sql recursion parent-child

我发现这个教程http://sqllessons.com/categories.html并且我想使用所描述的方法,因为它比递归调用更好但是我有两个问题:

  1. 我如何知道最深层次?在某些页面中,我可能有2个而在另一个页面中我可能有20个。我错过了某些内容,或者只有在您知道运行前的最深级别之后才能使用此方法!

  2. 我有多语言数据库设计,如何更改查询以使用下面的表格设计:


  3. CREATE TABLE `categories` (
      `id` int(11) NOT NULL,
      `position` int(11) DEFAULT NULL,
      `parent_id` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `parent_id_fk` (`parent_id`),
      CONSTRAINT `categories_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `categories` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE `categories_locale` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `slug` varchar(100) NOT NULL DEFAULT '',
      `name` varchar(40) NOT NULL DEFAULT '',
      `category_id` int(11) NOT NULL,
      `locale_id` smallint(5) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可能需要考虑研究'嵌套集'。嵌套集上的article是一个很好的起点。此外,如果您使用的是ORM(例如,学说),则支持嵌套集功能。