Autor | Zpráva | ||
---|---|---|---|
IdemeNaHavaj Profil |
#1 · Zasláno: 26. 10. 2013, 11:39:13
Mám problém ktorý sa mi podarilo vyriešiť iba tak, že sa mi SQL príkaz načítava cca 30 sekúnd
Mám tabulku kde mám cca 500 riadkov a v každom je Nadpis (ktorý sa aj opakuje) a podnadpis ktorý je unikátny. Každý nadpis má niekoľko podnadpisov. Potrebujem to nejako jedným SQL príkazom načítať, ja to aktuálne robím tak, že načítam všetky Nadpisy ako distinct, a potom vo while() načítavam podnadpisi WHERE Napis je načítaný Nadpis z toho DISTINCT príkazu. Neviem si rady ako to spojiť. |
||
juriad Profil |
#2 · Zasláno: 26. 10. 2013, 12:07:37
A když vyhodíš ten distinct a rovnou položíš dotaz:
SELECT nadpis, podnadpis FROM tabulka Předpokládám, že tvou současnou motivací k cyklu byl společný nadpis pro několik podnadpisů. Inspiruj se zde: Nadpis skupiny |
||
nemeja Profil |
Koukni se na traverzovaní kolem stromu pro více urovní, pokud to má jenom dvě, tak použij jak napsal juriad
|
||
IdemeNaHavaj Profil |
juriad:
Díky mám to, použil som ten kód $pamet = ''; while ($line = …) { if ($line['pismeno'] != $pamet) { $pamet = $line['pismeno']; echo "<b>$pamet</b><select>"; } echo "<option>$line[slovo]</option>"; } a tam kde je to $line[slovo] chcem dať <option>-y ale neviem ukončiť ten <select>, neviem kde to mám dať |
||
Kajman Profil |
#5 · Zasláno: 26. 10. 2013, 13:48:43
$pamet = $konec = ''; while ($line = …) { if ($line['pismeno'] != $pamet) { $pamet = $line['pismeno']; echo "$konec<b>$pamet</b><select>"; $konec = "</select>"; } echo "<option>$line[slovo]</option>"; } echo $konec; |
||
IdemeNaHavaj Profil |
#6 · Zasláno: 26. 10. 2013, 16:19:41
Kajman:
Nejde to ako potrebujem. Musí to byť v tej podmienke if($line != $pamet), ten koniec musí byť vždy za posledným <optionom> tak som si to predstavoval. |
||
IdemeNaHavaj Profil |
#7 · Zasláno: 28. 10. 2013, 12:05:41
http://php.vrana.cz/traverzovani-kolem-stromu-prakticky.php
tomu vôbec nerozumiem, rozmýšlam čo je to $row['hloubka'] ..hĺbka čoho? |
||
juriad Profil |
IdemeNaHavaj:
http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back S oblibou odkazuji na tuto prezentaci, která ukazuje čtyři různé způsoby reprezentace stromu v databázi (počínaje stranou 48). Zde oblíbené a často doporučované traverzování kolem stromu je popsané od strany 58. Číslo je hloubka/úroveň; text je samotný nadpis 1 A 2 A.A 3 A.A.A 2 A.A.B 2 A.B 3 A.B.A 1 B 2 B.A 3 B.A.A 2 B.B A.A.B , tak ten je v hloubce 3; jeho rodič je A.A , dědeček je A a nad ním už nic není.
|
||
IdemeNaHavaj Profil |
#9 · Zasláno: 28. 10. 2013, 12:21:30
Ja mám len 2 stĺpce "nadpis" a "podnadpis" v jednej tabulke
Nadpis sa opakuje, a podnadpis je unikátny. juriad: Nerozumiem tomu čo je v tom návode, tam sa autor prípaja aj do inej tabuľky |
||
juriad Profil |
#10 · Zasláno: 28. 10. 2013, 13:34:47
IdemeNaHavaj:
Pokud máš jen dvě úrovně a nikdy jich nebudeš chtít více, tak na nějaké ukládání stromů zapomeň a použij svůj existující přístup: jeden sloupec nadpis; druhý sloupec podnadpis. Zkus ukázat pár záznamů v databázi a HTML kód, který chceš vygenerovat. Z toho, cos napsal v [#4] moc moudrý nejsem. Nějak nechápu, proč bys měl chtít vypisovat nadpisy a podnadpisy do selectů a optionů. |
||
IdemeNaHavaj Profil |
#11 · Zasláno: 28. 10. 2013, 14:44:10
|
||
Časová prodleva: 10 let
|
0