2011-12-29 157 views
0

我發現這個教程http://sqllessons.com/categories.html,我想用所描述的方法,因爲它不是一個遞歸調用的更好,但我有兩個問題:類別和子類別

  1. 我怎麼知道最深的水平?在某些頁面中,我可能有2個,而在另一個頁面中,我可能有20個。我錯過了什麼,或者只有在知道運行前的最深層次時才能使用此方法!

  2. 我有一個多語言數據庫的設計,我怎麼能更改下面的查詢與我的表設計工作:


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; 

您的幫助將不勝感激。

+0

您可能想要提供該鏈接的概述。這有點長,大多數人不會在回答你的問題之前閱讀它。 – 2011-12-29 22:58:30

+0

您是否在尋找完全在數據庫中編碼的解決方案?另外,您參考的教程假定已知深度,結果集中的列數取決於此深度。如果您的深度未知,您可能只需返回雙列父/子ID,並讓消費代碼處理動態深度。如果你能澄清你在找什麼,我可能會幫助更多。 – 2011-12-29 23:02:53

回答

0

你可能要考慮研究'嵌套集'。嵌套集上的這個article是一個很好的開始。另外,如果您使用的是ORM(例如,學說),則支持嵌套設置功能。