可以說我有以下MySQL的結構:什麼是正確的查詢來獲得樹中的所有孩子?
CREATE TABLE `domains` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`domain` CHAR(50) NOT NULL,
`parent` INT(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MYISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1
insert into `domains`(`id`,`domain`,`parent`) values (1,'.com',0);
insert into `domains`(`id`,`domain`,`parent`) values (2,'example.com',1);
insert into `domains`(`id`,`domain`,`parent`) values (3,'sub1.example.com',2);
insert into `domains`(`id`,`domain`,`parent`) values (4,'sub2.example.com',2);
insert into `domains`(`id`,`domain`,`parent`) values (5,'s1.sub1.example.com',3);
insert into `domains`(`id`,`domain`,`parent`) values (6,'s2.sub1.example.com',3);
insert into `domains`(`id`,`domain`,`parent`) values (7,'sx1.s1.sub1.example.com',5);
insert into `domains`(`id`,`domain`,`parent`) values (8,'sx2.s2.sub1.example.com',6);
insert into `domains`(`id`,`domain`,`parent`) values (9,'x.sub2.example.com',4);
在我的腦海裏,就足以模擬一個簡單的樹形結構:
.com
|
example
/ \
sub1 sub2
ECT
我的問題是給SUB1。 example.com我想知道sub1.example.com的所有子代,而不使用我的代碼中的多個查詢。
我已經嘗試加入表本身,並試圖使用子查詢,我想不出任何會揭示所有的孩子。
在工作中,我們正在使用MPTT保持域名/子域名列表的順序,但我覺得有一個更簡單的方法來做到這一點。
我做了一些挖掘,有人做了類似的事情,但他們需要使用MySQL中的函數。我不認爲像這樣簡單,我們需要一個完整的功能。
也許我只是愚蠢的,沒有看到某種明顯的解決方案。
此外,請隨時更改結構。
'SELECT * FROM TREEHOUSE'是我第一次猜測。 – 2010-03-25 19:50:35