2010-11-14 18 views
0

如下表結構:從鄰接表和訂單從下選擇頂部

CREATE TABLE IF NOT EXISTS `roles` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(32) NOT NULL, 
    `description` varchar(255) NOT NULL, 
    `parent` int(11) unsigned DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `uniq_name` (`name`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ; 

纔有可能查詢它在孩子們第一次返回(自下而上)的方式。

1, user,  Login privileges, granted after account confirmation, 17 
2, admin,  Administrative user, has access to everything.,  NULL 
15, unverified, Users who have not validated their email address,  NULL 
16, verified, Users who have validated their email address,   NULL 
17, guest,  A guest role, an anonymous visitor with no account, NULL 
18, moderator, Role for doing staff duties,       1 

我們的目標是將這些加載到Zend_Acl中的addRole方法,這就需要你加一個孩子之前已添加的角色。

我目前的方法是次優(可能是錯誤的),這需要2個查詢。一個獲得所有的葉子節點(父節點爲NULL),另一個節點獲得由父節點(父節點)定義的父節點(DESC)。

任何幫助總是非常感激。

回答

2

ORDER BY (parent IS NOT NULL) ASC, parent DESC

+0

很好的回答,今天新學到了一些東西。謝謝。 – 2010-11-14 20:56:57