sql >> Database teknologi >  >> RDS >> Mysql

MySQL tæller alle børn, uanset hvor mange der er

(Der er adskillige tilgange til indlejrede sløjfer/forespørgsler.. en idé om strukturændring ville være at have en separat tabel, der viser alle børnene i hver kategori.. og sørg for, at den ikke kun har de umiddelbare børn, den har også underordnet -børn og under-underbørn... som 1 har barn 2, 2 har barn 3, 1 har barn 3, 3 har barn 5, 1 har barn 5.. osv..) MEN, for den nuværende situation..

Én sløjfestruktur kunne være:

Start resultatsæt. ||Forespørgsel for alle kategori-id'er, hvor overordnet =0. || Føj hver til array (X). ||Luk resultatsæt.

For hvert id i array (X):

  • Opret en ny tællevariabel (z).
  • Etabler et nyt underordnet id-array (Y).

  • Start resultatsæt. ||Forespørgselsantal * for alle elementer med kategori =aktuelt id x ||Tilføj til tællevariabel (z) ||Luk resultatsæt.

  • Start resultatsæt. ||Forespørgsel for alle kategori-id'er, hvor overordnet =aktuelt id x ||Føj alle til underordnet id-array (Y). ||Luk resultatsæt.

  • mens underordnet array (Y) længde> 0

    • kategori id y =første element i array (Y)

    • Start resultatsæt. ||Forespørgsel for alle kategori-id'er, hvor overordnet =nuværende id y. ||Føj alle til underordnet id-array (Y). ||Luk resultatsæt.

    • Start resultatsæt. ||Forespørgselsantal * for alle elementer med kategori =aktuelt id y ||Tilføj til tællevariabel (z) ||Luk resultatsæt.

    • fjern første element fra array (Y)

  • fortsæt mens loop

  • På dette tidspunkt har du det endelige elementantal (z) for kategori id x... gør noget med det, fortsæt derefter med for-løkken

End for loop




  1. CodeIgniter:Sådan udføres en Select (Distinct Fieldname) MySQL-forespørgsel

  2. Sådan bestiller du efter pivottabeldata i Laravels Eloquent ORM

  3. Vælg objekt oprettet mellem to datoer af Bookshelf, MySQL, Knex på node.js

  4. MYSQL fjernforbindelse kræver SSL