Autor Zpráva
H13
Profil *
Ahoj, potřeboval bych poradit ohledně SQL
Mám 2 tabulky (zkráceně)

Prvni: kategorieID,kategorieNad ...(kategorieNad - prostě číslo kategorie, která je nadřazená kategoriiID)
Druha:kategorieID, ZaznamID ...(ZaznamID - nejaky zaznam v kategoriiID)

Samozřejmě kategorieID v tabulce "Prvni" a kategorieID v tabulce "Druha" jsou ve vazbě

A nyní můj problém: Jak provést, aby se mi v "kategorieID" zobrazil počet záznamů "ZaznamID", což je jednoduché, ale také počet záznamů "ZaznamID" v podkategoriích.

Příklad:

Kategorie1 - Kategorie 2 - Zaznam1
- Zaznam2
- Zaznam3
- Kategorie 3 - Zaznam4
- Kategorie 4 - Zaznam5
- Zaznam6 (patří pod kategorii č.1)

Dokážu zobrazit, že v kategorii č.1 jsou 3 podkategorie, ale nevím jak zobrazit počet záznamů pro kategorii č.1 (v kategorii č.1 je pouze jeden záznam, ale celkem 6 záznamů, když se počítají i podkategorie - no a to bych chtěl zobrazit...

Díky moc
H13
Profil *
no tak ten příklad se trochu rozhodil, takže znovu:

Kategorie1 - Kategorie 2 - Zaznam1
____________________ - Zaznam2
____________________ - Zaznam3

_________- Kategorie 3 - Zaznam4

_________- Kategorie 4 - Zaznam5

_________- Zaznam6 (patří pod kategorii č.1)
Kajman_
Profil *
Pro neomezené vnořování to asi nějak jednoduše nepůjde... jedině od verze 5.0 si naprogramovat rekurzivní funkci, co ten počet bude vracet (a tam by se muselo ošetřit zacyklení).

Možná bych ty počty předpočítával a dával do nějaké obyčejné tabulky.
H13
Profil *
No jak to asi udělat - to bych možná věděl, ale nevím jestli je to proveditelný např. v php

SQL - zjistit nejvyšší číslo kategorie - tzn. poslední kategorie ...to není problém

potom nějaká fce, s kterou si nevím rady

1. $kategorie = 0 ... přiřazení čísla kategorii, od které se bude hledat

2. cyklus for(1) (projet celé tělo funkce až do poslední kategorie ... tedy < cislo posledni kategorie

2. SQL - výběr z databáze, kde budeme vybírat katagorii, která je podkategorii $kategorie (příklad $kategorie = 0, tedy kořen... potom budou vybrány všechny kategorie, které mají nadkategorii 0)

3. SQL - výpis poctu podkategorií... do teď bych to ještě zvládl

4 cyklus for(2) - uložení všech podkategorií do nějakého pole

5 konec cyklu for(1) a projet postupně v bodě 2 podkategorie...každé podkategorii by se opět přiřadila její kategorie atd, atd...

Možná by to bylo jednodušší vzít to opačně... počet celkových záznamů a postupně odečítat kategorie, které k nim nepatři nebo tak nějak...nevím... ovšem nějaká jednoduchá fce musí existovat, když tak funguje mnoho stránek, hlavně webkatalogů ???
Kajman_
Profil *
Pokud se nemůže stát, že je jedna kategorie ve dvou jiných, tak bych to řešil specifickým číslováním ve varcharu pro potřeby výpočtu položek.

01 kategorie1
0101 kategorie2
0102 kategorie3
0103 kategorie4

Pak jde jednoduše napsat select, kde se bude porovnávat jen potřebná délka začátku tohohle pseudočísla.
H13
Profil *
Řeším to tak, že každá kategorie má své ID a ID své nadřazené kategorie tak, aby bylo možné kdykoliv cokoliv změnit, to znamená např. kdykoliv převést podkategorii z druhé úrovně na třetí nebo naopak, navíc jeden záznam může být ve více kategoriích a jedna kategorie může obsahovat více záznamů (M:N)...takže určovat předem úroveň kategorie by podle mě (logika není moje silná stránka)zkomplikovalo situaci, kdyby se nějaká nadkategorie dostala např. z úrovně 3 na úroveň 2. ...ale přemýšlím o tom ...díky
Toto téma je uzamčeno. Odpověď nelze zaslat.

0