Autor Zpráva
lopikol
Profil
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}&nbsp;[{$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
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
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
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
Kajman: Díky doplnil jsem to tam. K tomu
WITH ROLLUP
dal jsem to tam, ale funguje to jen z části. Zjistí to počet všech článků dohromady, ale automaticky to vezme znou název poslendí kategorie a k ní mi to vypíše počet článků celkem. Nešlo by to nějak upravit, aby se to samo nevypsalo, ale například, když dám vypsat "WITH ROLLUP" tak to vypíše ten počet článků celkem?

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0