簡體   English   中英

從MySQL中給定的父母那里獲得所有孩子

[英]Get all children from a given parent in mysql

我想從給定的父母(以及可選的他們的水平深度)中檢索所有孩子。 另外,如果可能的話,我想在一個查詢或存儲過程中獲取它。

馬克·拜爾斯(Mark Byers)提出的這種解決方案 ,只是方向相反。

我的表結構是這樣的:

id      parent
1       0
2       1
3       0
4       1
5       2
6       5
7       2
8       4

因此,如果想要孩子1,我會得到:

+2
 ++5
  +++6
 ++7
+4
 ++8

如果想要兩個孩子,我會得到:

 ++5
  +++6
 ++7

如果想要4個孩子,我會得到:

+8

提前致謝!

編輯1:嵌套集模型對我不好

一個建議是放棄此鄰接模型並將您的結構更改為嵌套集。 嵌套集非常適合快速選擇,並且不需要任何遞歸結構。 但是,它的確帶有價格,插入,更新和刪除會更加痛苦。 之前我確實寫了一篇博客文章,它是基於MsSql的,但可以輕松移植到MySql。 Google還拋出了一些不錯的帖子。

另一個建議是從數據庫加載所有行,然后在前端代碼中編寫一個遞歸方法並緩存輸出。 如果我的表中只有幾百行,則使用這種方法。

在Query之后,將為您提供MySQL中表的所有子表。

提供數據庫名稱和表名稱作為參數

SELECT TABLE_NAME,
       COLUMN_NAME,
       CONSTRAINT_NAME,
       REFERENCED_TABLE_NAME,
       REFERENCED_COLUMN_NAME
FROM
       INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
       REFERENCED_TABLE_SCHEMA = "database"
AND    REFERENCED_TABLE_NAME = "table";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM