Mengambil Data Senarai Terpaut dalam MySQL
Dalam pangkalan data MySQL, anda menghadapi struktur jadual seperti yang disediakan di bawah:
table id INT NOT NULL PRIMARY KEY data ... next_id INT NULL
Tugasnya adalah untuk mendapatkan semula data mengikut susunan senarai terpaut. Pertimbangkan data berikut sebagai contoh:
id | next_id |
---|---|
1 | 2 |
2 | 4 |
3 | 9 |
4 | 3 |
9 | NULL |
Hasilnya hendaklah dalam susunan ini: 1, 2, 4, 3, 9.
Walau bagaimanapun, tidak seperti pangkalan data tertentu seperti Oracle dan Microsoft SQL Server, MySQL tidak menyokong pertanyaan rekursif. Masalah ini menyerupai mewakili pokok dalam pangkalan data SQL, khususnya pokok nipis dan memanjang.
Pelbagai penyelesaian wujud untuk mengurus struktur data jenis ini:
Untuk mengehadkan pertanyaan "depth," gunakan teknik berikut:
<code class="sql">SELECT * FROM mytable t1 LEFT JOIN mytable t2 ON (t1.next_id = t2.id) LEFT JOIN mytable t3 ON (t2.next_id = t3.id) LEFT JOIN mytable t4 ON (t3.next_id = t4.id) LEFT JOIN mytable t5 ON (t4.next_id = t5.id) LEFT JOIN mytable t6 ON (t5.next_id = t6.id) LEFT JOIN mytable t7 ON (t6.next_id = t7.id) LEFT JOIN mytable t8 ON (t7.next_id = t8.id) LEFT JOIN mytable t9 ON (t8.next_id = t9.id) LEFT JOIN mytable t10 ON (t9.next_id = t10.id);</code>
Walaupun prestasinya lembap, pertanyaan ini menghasilkan satu baris untuk setiap senarai terpaut.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data daripada Senarai Terpaut dalam MySQL Tanpa Pertanyaan Rekursif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!