Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL преброява всички деца, без значение колко има

(Има множество подходи към вложени цикли/заявки.. идеята за промяна на структурата би била да има отделна таблица, която изброява всички деца от всяка категория.. и се уверете, че тя има не само непосредствените деца, но също така има под -деца и под-поддеца... като 1 има дете 2, 2 има дете 3, 1 има дете 3, 3 има дете 5, 1 има дете 5... и т.н..) НО, за сегашната ситуация..

Една структура на цикъла може да бъде:

Стартирайте набора от резултати. ||Запитване за идентификатори на всички категории, където родител =0. || Добавете всеки към масив (X). ||Затваряне на набора от резултати.

За всеки идентификатор в масива (X):

  • Установете нова променлива за броене (z).
  • Създайте нов масив от идентификационни номера на дъщерите (Y).

  • Стартирайте набора от резултати. ||Брой на заявките * за всички елементи с категория =текущ идентификатор x ||Добавяне към променлива за броене (z) ||Затваряне на набора от резултати.

  • Стартирайте набора от резултати. ||Запитване за идентификатори на всички категории, където родител =текущ идентификатор x ||Добавяне на всички към дъщерния идентификационен номер (Y). ||Затваряне на набора от резултати.

  • докато дължина на дъщерния масив (Y)> 0

    • идентификатор на категория y =първият елемент в масива (Y)

    • Стартирайте набора от резултати. ||Запитване за идентификатори на всички категории, където родител =текущ идентификатор y. ||Добавяне на всички към дъщерния идентификационен масив (Y). ||Затваряне на набора от резултати.

    • Стартирайте набора от резултати. ||Брой на заявките * за всички елементи с категория =текущ идентификатор y ||Добавяне към променлива за броене (z) ||Затваряне на набора от резултати.

    • премахнете първия елемент от масива (Y)

  • продължи цикъл while

  • В този момент имате крайния брой артикули (z) за категория идентификатор x... направете нещо с него, след което продължете с цикъла for

Край за цикъл




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Множество вътрешни съединения с множество таблици

  2. SELECT COUNT() срещу mysql_num_rows();

  3. Свързване с отдалечен MySQL сървър с помощта на PHP

  4. Как да добавите време към стойност за дата и час в MySQL

  5. Как да се присъедините към една и съща маса, два пъти, в mysql?