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

baris pohon sql yang kompleks

Ada beberapa alternatif untuk membuat informasi hierarkis lebih mudah digunakan di SQL:

  • Ekspresi Tabel Umum (sesuai standar SQL-2003) mendukung kueri SQL rekursif terhadap tipe data parent-id yang Anda gunakan. Sejauh ini, MySQL tidak mendukung fitur ini. PostgreSQL 8.4, Microsoft SQL Server, dan IBM DB2 adalah contoh merek RDBMS yang mendukung sintaks CTE. Oracle juga memiliki ekstensi eksklusif untuk sintaks SQL yang mendukung kueri rekursif.

  • Kumpulan Bersarang (solusi kiri/kanan yang disebutkan oleh @phtombrain) adalah solusi yang dirinci dalam buku Joe Celko "Trees and Hierarchies in SQL for Smarties" dan juga di banyak artikel dan posting blog di internet.

  • Pencacahan Jalur (alias Materialized Path) menyimpan string di setiap baris dalam hierarki untuk mencatat jalur leluhur dari baris itu. Gabungkan ini dengan LIKE kueri untuk membandingkan string jalur dengan jalur leluhur dan jalur turunannya.

  • Tabel Penutup (alias Hubungan Penutupan Transitif) menggunakan tabel kedua untuk menyimpan semua hubungan leluhur-keturunan, bukan hanya induk langsung seperti dalam desain yang Anda gunakan. Banyak jenis kueri menjadi lebih mudah setelah Anda menyimpan semua jalur.

  • Solusi hibrida juga ada. Misalnya, simpan id induk langsung seperti yang Anda lakukan, tetapi juga akar pohonnya. Sekarang Anda bisa mendapatkan semua baris lain dalam hierarki yang sama, mengambilnya ke dalam kode aplikasi, dan memilah pohon dengan struktur data konvensional.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jenis kesalahan sintaks tidak valid =MyISAM dalam DDL dihasilkan oleh Hibernate

  2. MySql:apakah mungkin untuk 'SUM JIKA' atau 'HITUNG JIKA'?

  3. Cara mengacak kolom di MySql

  4. Bagaimana cara memilih semua catatan kecuali 3 catatan pertama?

  5. Bagaimana cara mendapatkan nama kolom dari hasil fungsi terkecil?