Autor | Zpráva | ||
---|---|---|---|
lopikol Profil |
#1 · Zasláno: 21. 10. 2010, 17:55:27
Mám tento SQL dotaz:
SELECT * FROM kategorie K LEFT JOIN (SELECT kategorie, COUNT(kategorie) AS soucet FROM clanky WHERE publikovat = 'ano') C ON C.kategorie = K.id WHERE K.zobrazeno = 'ano' V .tlp: {foreach from=$DB_RUBRIKY item="row_obj"} <a href='./{$row_obj->seo}'>{$row_obj->jmeno} [{$row_obj->soucet}] {/foreach} Všechny výpisy fungují dobře, až na ten součet. Nepíše se ke každé kategorii, ale napíše se pouze k jedné. Jak toto vyřešit. Pokud budete potřebovat ještě další informace, tak napište, dodám. |
||
lopikol Profil |
#2 · Zasláno: 22. 10. 2010, 17:01:23
Nikdo neví o co jde? Já mám problém stim, jak upravit LEFT JOIN když je tam COUNT(). Jindy mi to LEFT JOIN funguje, ale jakmile při něm využiji COUNT(), tak to nikdy nesčítá dobře.
|
||
AM_ Profil |
#3 · Zasláno: 22. 10. 2010, 17:48:45
proč je tam ten vnořený dotaz? mimochodem na mysql jsou vnořené dotazy otřesně naimplementované a při větším objemu databáze to začne být pomalé.
SELECT kategorie.*, COUNT(clanky.id) AS pocet -- pocet clanku je pocet, a ne soucet FROM kategorie LEFT JOIN clanky ON clanky.kategorie=kategorie.id WHERE kategorie.zobrazeno='ano' -- docela demence mít na proměnnou typu ano/ne textové pole, to je dnešní zmlsanost superrychlými počítači :) serveru ulehčíš, když tam bude TINYINT nebo BOOLEAN s hodnotami 0/1 GROUP BY kategorie.id -- tohle je to kouzlo |
||
lopikol Profil |
#4 · Zasláno: 22. 10. 2010, 18:49:52
AM: Díky moc funkční. Upravim DB podle tvých rad. Bylo by možné do tohoto dotazu ještě přidat dotaz, který mi zjistí celkový počet článků bez ohledu na to, v jaké je to kategorii?
|
||
Kajman_ Profil * |
Nejsem si jistý, jestli s hvědičkami půjde toto...
GROUP BY kategorie.id WITH ROLLUP A ještě tam AM zapomněl podmínku na publikaci článku LEFT JOIN clanky ON clanky.kategorie=kategorie.id AND clanky.publikovat = 'ano' |
||
lopikol Profil |
#6 · Zasláno: 23. 10. 2010, 10:22:42
Kajman: Díky doplnil jsem to tam. K tomu
WITH ROLLUP |
||
Časová prodleva: 14 let
|
0