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

Bagaimana cara mengambil kategori dan sub-kategori dalam satu kueri di sql? (mysql)

Jika Anda bertanya tentang "Apakah ada kueri rekursif mysql?" jawab "TIDAK".

Tapi ada pendekatan yang sangat bagus untuk menanganinya.

Buat tabel pembantu (katakanlah CatHierarchy)

CatHierarchy:
    SuperId, ChildId, Distance
------------------------------ 
     1          1         0
     1          2         1
     2          2         0

Data yang berlebihan ini memungkinkan dengan mudah dalam 1 kueri untuk memilih hierarki apa pun, dan dalam 2 sisipan mendukung hierarki apa pun (penghapusan juga dilakukan dalam 1 kueri dengan bantuan integritas kaskade penghapusan).

Jadi apa artinya ini. Anda melacak semua jalur dalam hierarki. Setiap node Cat harus menambahkan referensi ke dirinya sendiri (jarak 0), kemudian mendukung duplikasi dengan menambahkan data yang berlebihan tentang node yang ditautkan.

Untuk memilih kategori dengan sub cukup tulis:

 SELECT c.* from Category c inner join CatHierarchy ch ON ch.ChildId=c.cat_id
      WHERE ch.SuperId = :someSpecifiedRootOfCat

someSpecifiedRootOfCat - adalah parameter untuk menentukan akar kategori, ITU SEMUA!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Temukan duplikat di tabel yang sama di MySQL

  2. Isi catatan MySQL satu-ke-banyak tabel terkait dalam satu tindakan

  3. Aktifkan masuk ke wadah mysql buruh pelabuhan

  4. Cara mengakses elemen array

  5. Alternatif untuk banyak boolean di MySQL?