Dengan MySQL, cara termudah yang saya lakukan adalah menyimpan semua jalur di pohon, membuat penutupan transitif .
table_children
parent child
0 0
1 1
2 2
3 3
4 4
0 1
0 2
0 3
0 4
1 2
1 3
1 4
3 4
Sekarang Anda dapat menanyakannya sebagai berikut:
SELECT t.*
FROM table_children c
JOIN table t ON c.child = t.id
WHERE c.parent = 0;
Lihat juga:
- Apa cara paling efisien/elegan untuk mengurai tabel datar menjadi pohon?
- Model untuk Data Hirarki dengan SQL dan PHP
- Antipattern SQL:Menghindari Jebakan Pemrograman Basis Data