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

MySQL liczy wszystkie dzieci bez względu na ich liczbę

(Istnieje wiele podejść do zagnieżdżonych pętli / zapytań... pomysłem na zmianę struktury byłoby posiadanie oddzielnej tabeli zawierającej wszystkie dzieci z każdej kategorii... i upewnienie się, że ma ona nie tylko bezpośrednie dzieci, ale także podrzędne -children i sub-sub-children... jak 1 ma dziecko 2, 2 ma dziecko 3, 1 ma dziecko 3, 3 ma dziecko 5, 1 ma dziecko 5. itd.) ALE, w obecnej sytuacji...

Jedna struktura pętli może wyglądać tak:

Uruchom zestaw wyników. ||Zapytanie o wszystkie identyfikatory kategorii, gdzie rodzic =0. || Dodaj każdy do tablicy (X). ||Zamknij zestaw wyników.

Dla każdego identyfikatora w tablicy (X):

  • Ustal nową zmienną zliczającą (z).
  • Utwórz nową podrzędną tablicę identyfikatorów (Y).

  • Uruchom zestaw wyników. ||Zapytanie o liczbę * dla wszystkich elementów z kategorią =bieżący identyfikator x ||Dodaj do zmiennej liczenia (z) ||Zamknij zestaw wyników.

  • Uruchom zestaw wyników. ||Zapytanie o wszystkie identyfikatory kategorii, gdzie rodzic =bieżący identyfikator x ||Dodaj wszystkie do tablicy identyfikatorów podrzędnych (Y). ||Zamknij zestaw wyników.

  • podczas gdy długość tablicy podrzędnej (Y)> 0

    • identyfikator kategorii y =pierwsza pozycja w tablicy (Y)

    • Uruchom zestaw wyników. ||Zapytanie o wszystkie identyfikatory kategorii, gdzie rodzic =bieżący identyfikator y. ||Dodaj wszystko do podrzędnej tablicy identyfikatorów (Y). ||Zamknij zestaw wyników.

    • Uruchom zestaw wyników. ||Zapytanie o liczbę * dla wszystkich elementów z kategorią =bieżący identyfikator y ||Dodaj do zmiennej liczenia (z) ||Zamknij zestaw wyników.

    • usuń pierwszy element z tablicy (Y)

  • kontynuuj podczas pętli

  • W tym momencie masz ostateczną liczbę elementów (z) dla identyfikatora kategorii x... zrób coś z tym, a następnie kontynuuj pętlę for

Koniec pętli




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wygenerować unikalną nazwę użytkownika z imienia i nazwiska?

  2. Przechowywanie dat w Hibernate jako daty czasu UTC?

  3. jak rzutować szesnastkowy na varchar(datetime)?

  4. Jak przekonwertować kod MySQL na instrukcję PDO?

  5. Jak bezpiecznie przechowywać pliki na serwerze?