Mysql
 sql >> Baza danych >  >> RDS >> Mysql

złożone rzędy drzew sql

Istnieje kilka alternatyw ułatwiających pracę z informacjami hierarchicznymi w SQL:

  • Typowe wyrażenia tabelowe (zgodnie ze standardem SQL-2003) obsługuje rekurencyjne zapytania SQL względem typu identyfikatora nadrzędnego używanych danych. Jak dotąd MySQL nie obsługuje tej funkcji. PostgreSQL 8.4, Microsoft SQL Server i IBM DB2 to przykłady marek RDBMS, które obsługują składnię CTE. Oracle ma również własne rozszerzenie składni SQL, które obsługuje zapytania rekurencyjne.

  • Zestawy zagnieżdżone (rozwiązanie lewe/prawe, o którym wspomina @phantombrain) jest rozwiązaniem szczegółowo opisanym w książce Joe Celko „Trees and Hierarchies in SQL for Smarties”, a także w licznych artykułach i wpisach na blogach w Internecie.

  • Wyliczanie ścieżek (aka Materialized Path) przechowuje ciąg w każdym wierszu w hierarchii, aby zanotować ścieżkę przodków tego wiersza. Połącz to z LIKE zapytania, aby porównać ciąg ścieżki ze ścieżkami przodków i potomków.

  • Tabela zamknięcia (aka Transitive Closure Relation) używa drugiej tabeli do przechowywania wszystkich relacji przodek-potomek, a nie tylko bezpośredniego rodzica, jak w projekcie, którego używasz. Wiele typów zapytań staje się prostszych, gdy masz zapisane wszystkie ścieżki.

  • Rozwiązania hybrydowe również istnieją. Na przykład przechowuj identyfikator bezpośredniego rodzica, jak robisz, ale także korzeń drzewa. Teraz możesz pobrać wszystkie inne wiersze w tej samej hierarchii, pobrać je do kodu aplikacji i uporządkować drzewo za pomocą konwencjonalnych struktur danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql.h brakuje .... (Ruby on Rails, OSX)

  2. Kiedy używać pojedynczych cudzysłowów, podwójnych cudzysłowów i znaków wstecznych w MySQL

  3. wstaw do bazy danych z duplikatu pola tekstowego, jeśli nie jest pusty php sql

  4. Wielowymiarowa tablica PHP MYSQL

  5. SQL, aby zwrócić scalony zestaw wyników