Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno MySQL: Seřadit výsledky podle jiné tabulky

Ahoj, potřeboval bych pomoct s jedním MySQL dotazem (nevím co mám přesně googlovat, proto se ptám zde):
Mám tabulku jedna:

[b]
id     nazev
[/b]
1      pocitac
2      hardware
3      software

Potom mám tabulku číslo dva:

[b]
id      idr      nazev
[/b]
1       1        zaklady
2       1        periferie
3       3        Windows

kde v druhé tabulce je idr id "rodiče" tabulky jedna. Tudíž v první tabulce:
K id 1 jsou přiřazeny 2 subkategorie, ke dvojce žádná(0) a k trojce jedna. A já potřebuji to takto seřadit, aby se mi podařil takovýto výpis:
počítač-software-hardware přesně podle počtu subkategorii v tabulce 2 přiřazené jedničce. Díky za odpověď.

Předmět Autor Datum
Chces rict, ze to mas navrzeno tak, ze nemas nikde hlavicku pocitace a k ni to, co obsahuje, ale mas…
Jan Fiala 01.02.2009 11:13
Jan Fiala
A jak by teda měla být ta databáze navržena? Dělám katalog odkazů - v jedné tabulce mám kategorie (p…
marekdrtic 01.02.2009 11:15
marekdrtic
Jednoduchým řešením by bylo do první tabulky ukládat počet subkategorií, které obsahuje. Tedy při ka…
host 01.02.2009 12:01
host
No to jo, ale byl bych radši kdybych to vyřešil nějak jinak. I tak díky ;-)
marekdrtic 01.02.2009 12:19
marekdrtic
Pocitac je jeden celek, ktery obsahuje spoustu komponent. Ty muzes mit rozdeleny do kategorii, ale v…
Jan Fiala 01.02.2009 14:10
Jan Fiala
Já toto udal pouze jako vymyšlený příklad ;-)
marekdrtic 01.02.2009 14:28
marekdrtic
mohlo by to pomoct, este som to neotestoval :) skusim si to hodit do databazy a overim to SELECT T2…
wam_Spider007 01.02.2009 12:49
wam_Spider007
druha moznost je... vytvorit si VIEW podla druhej tabulky, ktore ti bude zobrazovat IDR (id rodica)…
wam_Spider007 01.02.2009 13:03
wam_Spider007
Thx funguje to ;-)
marekdrtic 01.02.2009 14:31
marekdrtic
Funguje to, ale je to pouze obchazeni spatneho navrhu databaze a v budoucnu se ti to vymsti, protoze…
Jan Fiala 01.02.2009 14:34
Jan Fiala
Já to uvedl pouze jako příklad, ve skutečnosti ty tabulky vypadají takto: Kategorie jsou: Auto-moto… poslední
marekdrtic 01.02.2009 14:36
marekdrtic

Jednoduchým řešením by bylo do první tabulky ukládat počet subkategorií, které obsahuje. Tedy při každém vytvoření nové subkategorie se provede UPDATE do první tabulky a zvýší se subcat příslušné kategorie o jednu.

id subcat nazev

1    2    pocitac
2    0    hardware
3    1    software

Pak už by stačilo jen ORDER BY subcat...

Pocitac je jeden celek, ktery obsahuje spoustu komponent. Ty muzes mit rozdeleny do kategorii, ale v tech kateoriich by nemel byt vlastni pocitac.

Takze by mela existovat tabulka Pocitace a PocitaceSoucasti
V te prvni nejake spolecne udaje - typ, vyrobce, kdy sji nakoupil, zarucni doba, cisla dokladu atd. podle toho, co potrebujes a v te druhe pak to, co pocitac obsahuje - software, hardware komponenty...
Pak bys nemel vubec zadny problem s razenim a vybiranim.

mohlo by to pomoct, este som to neotestoval :)
skusim si to hodit do databazy a overim to

SELECT T2.IDR, T1.NAZEV, IFNULL(COUNT(T2.IDR), 0)
FROM TAB2 T2
RIGHT JOIN TAB1 T1 ON T2.IDR = T1.ID
GROUP BY T2.IDR, T1.NAZEV
ORDER BY COUNT(T2.IDR) DESC

EDIT: doplnene descending zoradovanie ;)
otestoval som to u seba a ide to. Jediny problem je, ze pri software sa nezobrazuje ID nadradeneho riadku.

takze vysledok je

1 - Pocitac - 2
3 - Hardware - 1
null - software - 0

Já to uvedl pouze jako příklad, ve skutečnosti ty tabulky vypadají takto:
Kategorie jsou:
Auto-moto
Cestování a regiony
Zábava a hobby

a v tabulce subkategorie je třeba k zábavě a hobby toto:
Chovatelství, Film, Hry, Hudba, Humor, Koníčky a hobby....
A v další tabulce odkazy už jsou samotné odkazy, id subkategorie a id kategorie.

Zpět do poradny Odpovědět na původní otázku Nahoru