Zjištění všech ID v podkategoriích – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Zjištění všech ID v podkategoriích – MySQL – Fórum – Programujte.comZjištění všech ID v podkategoriích – MySQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Sakalik0
Newbie
11. 7. 2009   #1
-
0
-

zdar, mám tabulku
ID | PARENT | NAZEV | ...

a ted si zobrazím kategorii s ID x, která má pod sebou kategorie, važící se na ní nastavením parent .
Jak se dá efektivně přímo přes MySQL zjistit, jaká všechna ID pod ní jsou?
Já bych to řešil hrozně složitě a je mi jasné, že to půjde udělat rychleji a lépe. Předem děkuji za každou radu.

Nahlásit jako SPAM
IP: 85.71.146.–
Reklama
Reklama
dannyk0
Věrný člen
11. 7. 2009   #2
-
0
-

Jestli jsem to pochopil, tak by melo jit tohle:



SELECT * FROM table WHERE parent=vybrane_ID

Tohle ti vybere vsechny zaznamy, ktere patri do nejake kategorie s vybranym ID.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
marioff0
Expert
11. 7. 2009   #3
-
0
-

ja som toto tiez riesil... ale som sa nakoniec nedopracoval k zmysluplnemu dotazu... predpokladam ze tam mas viac subkategorii.. teda viacurovnove.. skusal si uz aj nieco??

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Sakalik0
Newbie
11. 7. 2009   #4
-
0
-

Přesně. Zřejmě to z dotazu nevyplynulo, ale těch podkategorií je samořejmě více než 1. Prozatimní řešení mám udělané přes pole. Vytáhnu si z datababáze ID všech podkategorií a potom s ním dále pracuju. Ale je to krapet neefektivní řešení - minimálně mi to tak přijde, proto se ptám tady.

Nahlásit jako SPAM
IP: 85.71.146.–
marioff0
Expert
11. 7. 2009   #5
-
0
-

asi mame rovnake myslienkove pochody... ja to mam zatial tak ze v kazdej nadradenej kategorii mam stlpec s IDeckami podkategorii (teda nieco taketo: 4-8-12-15-16) a pomocou explode to rozsekam a vyrobim dotaz v zmysle ID=dotazovane_id OR ID=4 OR ID=8 OR..... len to je riesenie za 5 korun :(

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
bukaj_0010
Věrný člen
11. 7. 2009   #6
-
0
-

Sakalik
O správě hierarchických dat v MySQL je hezky povězeno v tomto článku[1], česky zase něco na intervalu[2]. Bohužel asi nepomohou vyřešit tenhle problém. Při použití tohoto modelu (tj. odkazování se na rodiče) se celý strom získává jen těžko – viz první článek. Pokud víš hloubku podstromu, můžeš sestavit dotaz pomocí spojovaní tabulky se samou sebou (self-join), jinak to nepůjde jinak, než použít rekruzi, či zásobník (viz druhý článek). Možnosti řešení jsou tedy:

1) Ukládat si ke každému uzlu jeho hloubku a někam mimo si uložit hloubku celého stromu (na to můžeš dobře posloužit i soubor) a vytvářet dotazy pomocí self-joinů.

2) Holt použít tu rekurzi, zásobník a hezky si zadotazovat.

3) Přejít na model traverzování kolem stromu, protože tam je to jednoduché:

SELECT [lft], [rgt] FROM [kategorie] WHERE [id] = $id

SELECT [id] FROM [kategorie] WHERE [lft] > $lft AND [rgt] < $rgt -- $lft, $rgt --> z předchozího dotazu


[1] http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
[2] http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Sakalik0
Newbie
11. 7. 2009   #7
-
0
-

Díky moc, aspoň teď vim, že práce nebude zbytečná :smile1: .

Nahlásit jako SPAM
IP: 85.71.146.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý