php mysql得到所有的父母
我试图让所有的孩子的父母。我有一个简单的查询 从部分地方sectionID = 6 数据库结构非常简单php mysql得到所有的父母
sectionID parent
1 0
2 1
3 1
4 2
5 4
6 5
现在我想从sectionID 6得到所有家长选择,其结果应该是一个字符串0/2/4/5/6。儿童可能没有很多父母,它可能只有一个,所以结果应该是不同的。即 5/6 ..我希望你明白我想要做什么。我已经尝试过在互联网上找到的几个递归函数,但是我真的很吮吸这个,并想知道是否有人可以帮助我走上正确的轨道。 P.S我使用PHP和MySQL
我不会写所有的代码,但如果我理解正确的数据库玛这个想法应该工作。
section = 6
result = ""
while section != ""
select parent where sectionID = section
result += parent
section = parent
return result
那么,据我所知,你有两种选择,都是众所周知的。
1)你让一个递归函数,只是你一直在努力的人。他们周围有很多人,我不会把他放在这里。
2)到目前为止我最喜欢的,这是数据库模式最现代化的ORM的使用,这就是所谓的嵌套集模型。
基本上你在表上创建了几个栏,它看起来应该像这样的:
CREATE TABLE nested_category (
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
lft INT NOT NULL,
rgt INT NOT NULL
);
INSERT INTO nested_category VALUES(1,'ELECTRONICS',1,20),(2,'TELEVISIONS',2,9),(3,'TUBE',3,4),
(4,'LCD',5,6),(5,'PLASMA',7,8),(6,'PORTABLE ELECTRONICS',10,19),(7,'MP3 PLAYERS',11,14),(8,'FLASH',12,13),
(9,'CD PLAYERS',15,16),(10,'2 WAY RADIOS',17,18);
SELECT * FROM nested_category ORDER BY category_id;
+-------------+----------------------+-----+-----+
| category_id | name | lft | rgt |
+-------------+----------------------+-----+-----+
| 1 | ELECTRONICS | 1 | 20 |
| 2 | TELEVISIONS | 2 | 9 |
| 3 | TUBE | 3 | 4 |
| 4 | LCD | 5 | 6 |
| 5 | PLASMA | 7 | 8 |
| 6 | PORTABLE ELECTRONICS | 10 | 19 |
| 7 | MP3 PLAYERS | 11 | 14 |
| 8 | FLASH | 12 | 13 |
| 9 | CD PLAYERS | 15 | 16 |
| 10 | 2 WAY RADIOS | 17 | 18 |
+-------------+----------------------+-----+-----+
如果你注意到没有PARENT_ID列。为了能够搜索它的儿童的,比方说,第5行的查询会像:
Select * from nested_category where left > 7 and left < 8 order by left asc,
这会带来任何结果。
对于行号1的结果却会带来整个树。
我有这台电脑上autocreating这些列没有PHP脚本,但很多周围还有。我怕他们也是递归的。
你我找到大量的信息四处搜索“嵌套集模型”,喜欢模型like this one
的this或理论框架exaplanations,这是一个WAY重复的问题(我不能把它作为复制)
其他一些答案:
您应该在发布之前重新阅读论坛规则,查找已提出的问题。
希望它有帮助。