sql >> Databáze >  >> RDS >> Mysql

MySQL počítá všechny děti bez ohledu na to, kolik jich je

(Existuje mnoho přístupů k vnořeným cyklům/dotazům. Myšlenka na změnu struktury by byla mít samostatnou tabulku, která by obsahovala seznam všech potomků každé kategorie.. a ujistěte se, že má nejen bezprostřední potomky, ale také sub -děti a pod-děti... jako 1 má dítě 2, 2 má dítě 3, 1 má dítě 3, 3 má dítě 5, 1 má dítě 5.. atd..) ALE za současné situace..

Struktura jedné smyčky může být:

Spustit sadu výsledků. ||Dotaz na všechna ID kategorií, kde rodič =0. || Přidejte každý do pole (X). ||Zavřít sadu výsledků.

Pro každé ID v poli (X):

  • Vytvořte novou proměnnou počítání (z).
  • Vytvořte nové podřízené pole ID (Y).

  • Spustit sadu výsledků. ||Počet dotazů * pro všechny položky s kategorií =aktuální id x ||Přidat do proměnné počítání (z) ||Zavřít sadu výsledků.

  • Spustit sadu výsledků. ||Dotaz na všechna id kategorií, kde rodič =aktuální id x ||Přidat vše do podřízeného pole id (Y). ||Zavřít sadu výsledků.

  • zatímco délka podřízeného pole (Y)> 0

    • id kategorie y =první položka v poli (Y)

    • Spustit sadu výsledků. ||Dotaz na všechna ID kategorií, kde rodič =aktuální id y. ||Přidat vše do podřízeného pole id (Y). ||Zavřít sadu výsledků.

    • Spustit sadu výsledků. ||Počet dotazů * pro všechny položky s kategorií =aktuální id y ||Přidat do proměnné počítání (z) ||Zavřít sadu výsledků.

    • odstranit první položku z pole (Y)

  • pokračovat ve smyčce

  • V tomto okamžiku máte konečný počet položek (z) pro kategorii id x... něco s tím udělejte a poté pokračujte smyčkou for

Konec smyčky




  1. MySQL na Dockeru – Jak vytvořit kontejner pro vaši databázi:Nový dokument

  2. php varování mysql_fetch_assoc

  3. Jak vrátit levou nebo pravou část řetězce v MySQL

  4. Jak nastavit řazení sloupce na SQL Server (T-SQL)