Autor | Zpráva | ||
---|---|---|---|
H13 Profil * |
#1 · Zasláno: 10. 2. 2006, 14:00:28
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 * |
#2 · Zasláno: 10. 2. 2006, 14:04:40
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 * |
#3 · Zasláno: 10. 2. 2006, 20:48:15
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 * |
#4 · Zasláno: 10. 2. 2006, 22:08:45
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 * |
#5 · Zasláno: 11. 2. 2006, 22:07:43
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. |
||
Časová prodleva: 3 dny
|
|||
H13 Profil * |
#6 · Zasláno: 14. 2. 2006, 18:34:58
Ř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
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0