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

Induk - Hubungan anak dalam satu tabel

Karena Anda memiliki 4 level yang terbatas, Anda tidak perlu rekursi (walaupun akan berguna untuk dapat menggunakan mis. MS SQL CTE).

Sesuatu seperti:

SELECT
  t4.uid as child, 
  --t3.uid as parent,
  --t2.uid as grand_parent,
  --t1.uid as great_grand_parent,
  t1.parentid as great_great_grand_parent
FROM
  your_table_name t1

  inner join your_table_name t2
  on t2.parentid = t1.uid

  inner join your_table_name t3
  on t3.parentid = t2.uid

  inner join your_table_name t4
  on t4.parentid = t3.uin

where 
  t4.uid = '10007' -- your start node.

Jika Anda perlu melakukan ini untuk beberapa node, Anda harus menggabungkan ini dengan sesuatu yang memilih node awal Anda, atau misalnya, ganti WHERE t4.uid = '10007' di atas klausa menjadi WHERE t4.uid IN (SELECT DISTINCT uid FROM your_table_name)

Ini dilakukan dengan tangan kosong jadi mohon maaf atas kesalahan ketik.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat memulai Mysql di Mac

  2. Campuran MySQL dan Mongodb dalam sebuah aplikasi

  3. Ubah nama kolom secara dinamis dalam pernyataan PDO

  4. Apa perbedaan antara VARCHAR dan CHAR?

  5. MySQL:Bagaimana menemukan daun di node tertentu