2013-08-17 64 views
0

工作,我得到這個表:MySQL的樹木

CREATE TABLE 'category' (
    'id' INT(11) NOT NULL AUTO_INCREMENT, 
    'parent_category_id' INT(11) NULL DEFAULT NULL, 
    'name' VARCHAR(100) NOT NULL, 
    PRIMARY KEY ('id'), 
    INDEX 'parent_category_id' ('parent_category_id'), 
    CONSTRAINT 'category_ibfk_1' FOREIGN KEY ('parent_category_id') REFERENCES 'category' ('id') 
) COLLATE='utf8_general_ci' ENGINE=InnoDB; 

如何選擇具有小於3個小類(沒有深度)類別, 以及如何選擇哪些沒有子元素的類別。 謝謝!

回答

1

不到3:

select parent.* 
from category parent left outer join 
    category child 
    on parent.id = child.parent_category_id 
group by parent.id 
having count(child.id) < 3 

對於無類:

select parent.* 
from category parent left outer join 
    category child 
    on parent.id = child.parent_category_id 
where child.id is null 
+0

它計算的類別有多少元素包含,而不是子類。或者我誤解了一些東西? – zogby

+0

@zogby。 。 。我相信這會回答你的問題。也許你應該用一些示例數據來編輯你的問題,以防我失去了一些東西。 –

+0

對不起,你的回答是對的 – zogby