比方說,有一個叫人有以下的列表:如何僅使用與SQL父表子關係選擇一代分層樹?
- 爲person_id(整數)
- parent_person_id(整數)
- 名(爲varchar)
現在,讓我們說表正在填充,名稱值只是字母(A,B,C,D ...)。考慮到每個人的父母,我們最終會得到像下面那樣的分層樹。這些值是在格式:
爲person_id,parent_person_id,名稱
- 1,1,A
- 2,2,B
- 3,2,C
- 4,3,D
- 5,2,E
- 6,5,F
- 7,6,G
- 8,6,H
- 6,5,F
- 3,2,C
考慮在以上的結構中,A & B作爲第一代,C & E作爲第二代,D第三代210 F,第四代G & H.對於第一代元素,parent_person_id等於元素的person_id。
我需要編寫一個查詢,允許我從樹的特定代(第一,第二,第三,第四等)中選擇名稱。因此,我可以得到一個表格,其中包含特定用戶的姓名。例如:
第一代
person name | parent name
A | A
B | B
第二代
person name | parent name
C | B
E | B
第三代
person name | parent name
D | C
F | E
第四代
person name | parent name
G | F
H | F
我想通過一個參數來定義每一代應該在下面的查詢中被列爲子。
SELECT
child.name as 'person name',
parent.name as 'parent name'
FROM
people as child
JOIN
people as parent
ON
child.parent_person_id = parent.person_id
WHERE
-- I NEED HELP HERE :)
;
有沒有人有任何想法,我怎麼能做到這一點?歡迎任何幫助。
維尼修斯,我覺得這個提問/回答可以幫助你http://stackoverflow.com/questions/5522478/sql-query-for-tree-table –
你能提供一個表,你的結果尋找? –
@TomasoAlbinoni,我在問題中添加了幾個結果表。請注意,每代都會產生不同的結果。我可以把它放在桌子上,但我每一代都在尋找桌子。 –