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

Jak pobrać kategorie i podkategorie w jednym zapytaniu w sql? (mysql)

Jeśli pytasz o "Czy w mysql są zapytania rekurencyjne?" odpowiedz „NIE”.

Ale jest bardzo dobre podejście do tego.

Utwórz tabelę pomocniczą (mówiąc CatHierarchy)

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

Te nadmiarowe dane pozwalają łatwo w 1 zapytaniu wybrać dowolną hierarchię, aw 2 wstawić obsługę dowolnej hierarchii (usunięcie wykonywane również w 1 zapytaniu za pomocą kaskadowej integralności).

Więc co to znaczy. Śledzisz wszystkie ścieżki w hierarchii. Każdy węzeł Cat musi dodać odniesienie do siebie (odległość 0), a następnie obsługiwać duplikację, dodając nadmiarowe dane o węzłach, które są połączone.

Aby wybrać kategorię z sub, po prostu napisz:

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

someSpecifiedRootOfCat - jest parametrem do określenia głównego katalogu categoryTHATS ALL!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dodać sortowanie do zapytania laravel

  2. MySQL — Pobieranie najniższej wartości

  3. Uruchom zapytanie MySQL na zdalnej maszynie przez ssh w wierszu poleceń

  4. Wszystkie kolumny tabeli powinny być indeksowane, czy nie mysql bazy danych?

  5. MySQL:Szybki podział typów złączeń