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

Data Hirarki di MySql

Seperti yang ditunjukkan di atas ini tidak benar-benar rekursif tetapi jika Anda tahu berapa banyak langkah yang Anda butuhkan untuk mencapai maksimum, Anda dapat menggunakan sesuatu di sepanjang baris ini (mungkin menggunakan PHP untuk menghasilkan kueri):

Saya pertama-tama menetapkan ID orang tua ke NULL daripada 0, tapi itu preferensi pribadi.

SELECT * FROM table t1
LEFT JOIN table t2 ON t2.parent_id = t1.role_id
LEFT JOIN table t3 ON t3.parent_id = t2.role_id
WHERE t1.parent_id IS NULL

^^ seberapa dalam pun Anda harus melakukannya.

[bit berikutnya tidak sepenuhnya relevan ]

Anda kemudian dapat memanipulasi output sesuatu di sepanjang baris ini:

SELECT
        (CASE 
        WHEN (t1.name IS NULL AND t2.name IS NULL) THEN t3.name
        WHEN (t1.name IS NULL AND t2.name IS NOT NULL) THEN t2.name
        ELSE t1.name END)  AS first,
        (CASE 
        WHEN (t1.name IS NOT NULL AND t2.name IS NOT NULL) THEN t2.name
        WHEN (t2.name IS NULL AND t3.name IS NOT NULL) THEN NULL
        ELSE t3.name END)  AS second,
        (CASE 
        WHEN (t1.name IS NOT NULL) THEN t3.name
        ELSE  NULL END)  AS third
FROM


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP Laravel:Tidak ada koneksi yang dapat dibuat karena mesin target secara aktif menolaknya

  2. Bagaimana mengatasi masalah Tidak dapat memuat plugin otentikasi 'caching_sha2_password'

  3. virtualenv, mysql-python, pip:ada yang tahu caranya?

  4. Cara Menginstal MySQL 8 di Ubuntu

  5. permintaan mysql untuk memilih semuanya kecuali