![](/img/trans.png)
[英]Get all details of child with relation of its parents in php mysql
[英]php mysql get all parents
我正在努力讓所有孩子的父母。 我有一個簡單的查詢,從sectionID = 6的部分中選擇。數據庫結構非常簡單
sectionID parent
1 0
2 1
3 1
4 2
5 4
6 5
現在,我嘗試從sectionID 6獲取所有父母,結果應該是字符串0/2/4/5/6。 孩子可能沒有很多父母,可能只有一個父母,所以結果應該有所不同。 即5/6 ..我希望您理解我正在嘗試做的事情。 我已經嘗試過在互聯網上找到的幾個遞歸函數,但是我確實對此感到很困惑,並且想知道是否有人可以幫助我走上正確的道路。 PS我正在使用PHP和MySQL
好吧,據我所知,您有兩個選擇,兩個都很有名。
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行,結果將帶入整棵樹。
我沒有用於在此計算機上自動創建這些列的php腳本,但是周圍有很多。 恐怕它們也是遞歸的。
你我發現周圍很多搜索“嵌套集模型”的信息,像這樣或模型的理論框架exaplanations 像這樣的
這是一個重復的問題(我不能將其重復)
其他一些答案:
在發布之前,您應該重新閱讀論壇規則,查找已經問過的問題。
希望能幫助到你。
我不會編寫所有代碼,但是如果我正確地理解了您的數據庫shema,那么這個想法就應該起作用。
section = 6
result = ""
while section != ""
select parent where sectionID = section
result += parent
section = parent
return result
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.