sql >> Databasteknik >  >> RDS >> Mysql

MySQL räknar alla barn oavsett hur många det är

(Det finns många tillvägagångssätt för kapslade slingor/frågor. En idé om strukturändring skulle vara att ha en separat tabell som listar alla barn i varje kategori.. och se till att den inte bara har de omedelbara barnen, den har också underordnet -barn och underordnade barn... typ 1 har barn 2, 2 har barn 3, 1 har barn 3, 3 har barn 5, 1 har barn 5.. etc..) MEN, för nuvarande situation..

En loopstruktur kan vara:

Starta resultatuppsättning. ||Fråga för alla kategori-ID där parent =0. || Lägg till varje till array (X). ||Stäng resultatuppsättning.

För varje id i array (X):

  • Etablera en ny räknevariabel (z).
  • Etablera en ny barn-id-matris (Y).

  • Starta resultatuppsättning. ||Frågeantal * för alla objekt med kategori =aktuellt id x ||Lägg till i räknevariabel (z) ||Stäng resultatuppsättning.

  • Starta resultatuppsättning. ||Fråga för alla kategori-id där förälder =aktuellt id x ||Lägg till alla till barn-id-matrisen (Y). ||Stäng resultatuppsättning.

  • medan underordnad matris (Y) längd> 0

    • kategori id y =första objekt i array (Y)

    • Starta resultatuppsättning. ||Fråga för alla kategori-ID där förälder =aktuellt ID y. ||Lägg till alla till barn-id-matrisen (Y). ||Stäng resultatuppsättning.

    • Starta resultatuppsättning. ||Frågeantal * för alla objekt med kategori =aktuellt id y ||Lägg till i räknevariabel (z) ||Stäng resultatuppsättning.

    • ta bort första objekt från array (Y)

  • fortsätt medan loop

  • Vid det här laget har du det slutliga antalet objekt (z) för kategori id x... gör något med det, fortsätt sedan med for-slingan

Slut för loop




  1. SQLite Skapa vy

  2. Hantera undantag för främmande nyckel i PHP

  3. Uppdatera/Uppdatera en formulärskärm i Oracle D2k Forms 6i

  4. Utforska MySQL Binlog Server – Ripple