Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah ada alternatif `connect by` di MySQL?

Seperti yang dikatakan dalam komentar, tidak ada jalan pintas dengan mysql.

TAPI!

Jika Anda memiliki kemungkinan untuk mengubah struktur database, Anda dapat menerapkan desain yang lebih baik untuk menangani hierarki seperti pohon.

Jika Anda mengikuti TUTORIAL INI dari Bill Karwin (DI SINI adalah jawaban asli yang mereferensikan tutorial slideshow itu), Anda dapat menemukan 4 metode yang digunakan untuk memodelkan struktur hierarkis:

  1. Daftar Kecakapan
  2. Pencacahan Jalur
  3. Set bersarang
  4. Tabel penutup

Sekarang, model terbaik yang mungkin adalah yang ke-4 (saya meninggalkan deskripsi dari 3 model lainnya kepada pembaca), yang pada dasarnya membutuhkan 2 tabel:satu untuk elemen dan satu untuk jalur. Di tabel jalur (tabel penutupan itu sendiri), Anda akan menyimpan setiap jalur dari setiap simpul ke setiap turunan (bukan hanya turunan langsung!).

Disarankan untuk menyimpan juga panjang jalur untuk setiap baris, karena memudahkan kueri untuk turunan langsung di pohon.

Meskipun solusi ini membutuhkan lebih banyak ruang, solusi ini memiliki kinerja terbaik secara keseluruhan dan sangat mudah digunakan:sama sekali tidak bergantung pada kueri rekursif DAN akan memberikan integritas referensial untuk seluruh kumpulan data!

Misalnya, untuk mendapatkan setiap anak dari simpul #4:

select a.*
from nodes a
join paths b
on a.node_id = b.descendant
where b.ancestor = 4

Contoh lain:dapatkan semua ancestor dari node #11

select a.*
from nodes a
join paths b
on a.node_id = b.ancestor
where b.descendant = 11

perlu menghapus subpohon dari simpul #6

delete from paths where descendant in
(select descendant from paths where ancestor = 6)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan pemicu di MySql untuk membuat kunci asing

  2. Mysql:Temukan baris, di mana perbedaan cap waktu kurang dari x

  3. Cara mengetahui ukuran indeks di mysql (termasuk kunci utama)

  4. MySQL Atau Kondisi

  5. Cara memanggil prosedur tersimpan di Entity Framework Core dengan parameter input dan output menggunakan mysql