Autor Zpráva
krteczek
Profil
dobrý den, mám takový problém, tahám z db z tabulky temy nazev, seonazev, uvodnik a z tabulky komentare potrebuji dostat počet záznamů které ve sloupci id_temy maji stejne id jako prave zobrazeny uvodnik => potrebuji jen cislo odpovidajici počtu komentaru k tomu tematu

dotaz vypadá takhle (je špatne:-(:
select clanky.nazov as nazov,
clanky.seonazov as seonazov,
clanky.uvodnik as uvodnik,
komentare.id_temy as pocet
from
clanky,
komentare
where
komentare count(id_temy)=clanky.id
order by clanky.id asc
Acci
Profil
SELECT clanky.nazov AS nazov,

clanky.seonazov AS seonazov,
clanky.uvodnik AS uvodnik,
COUNT(komentare.id_temy) AS pocet
FROM clanky
INNER JOIN komentare ON clanky.id = komentare.id_temy
ORDER BY clanky.id ASC GROUP BY komentare.id_temy

Ale nejsem si jistý
WanTo
Profil
Co znamená inner join?
mitr
Profil
Já bych dal LEFT JOIN (preci neni urcite ke kazdemu clanku komentar)
a GROUP BY clanky.id (pokud je v tabulce clanky sloupec id) :)
GROUP BY komentare.id_temy by preci vybralo jen tolik clanky k kterym odpovida nekolik komentaru a pritom kazdy pocet jen jednou :)
krteczek
Profil
pokud vim tak inner je nepovinný parametr spojení: inner join => join


Acci: děkuji ale stále mi to píše chybu (group by i po prepsani podle rady mistr) :

				$dotaz="SELECT 

".Tabulka_clanky.".nazov AS nazov,
".Tabulka_clanky.".seonazov AS seonazov,
".Tabulka_clanky.".uvodnik AS uvodnik,
COUNT(".Tabulka_komentare.".id_temy) AS pocet
FROM
".Tabulka_clanky."
LEFT JOIN
".Tabulka_komentare." ON ".Tabulka_clanky.".id = ".Tabulka_komentare.".id_temy
ORDER BY
".Tabulka_clanky.".id ASC GROUP BY ".Tabulka_clanky.".id
";


chyba:check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY clanky.id' at line 11
mitr
Profil
krteczek
Kdyžtak MITR ;-) Mistr nejsem :)))))))
Jejda to je zápis :))))))))) a jkou chybu to píše ?
Proč máš např: ".Tabulka_clanky.".nazov AS nazov, když to bude stejná název ?

SELECT clanky.nazov, clanky.seonazov, clanky.uvodnik, COUNT(komentare.id_temy) AS pocet
FROM clanky
LEFT JOIN komentare ON clanky.id=komentare.id_temy
GROUP BY clanky.id
ORDER BY clanky.id ASC

Proč to nepíšeš takto ?

Pokud sis všimnul GROUP BY jsem dal před ORDER BY ;-)
krteczek
Profil
heh tak se mi to povedlo rozjet (nehlásí chybu) nejdříve má být group by a potom se řadí pořadí

		$dotaz="SELECT 

".Tabulka_clanky.".nazov AS nazov,
".Tabulka_clanky.".seonazov AS seonazov,
".Tabulka_clanky.".uvodnik AS uvodnik,
COUNT(".Tabulka_komentare.".id_temy) AS pocet
FROM
".Tabulka_clanky."
LEFT JOIN
".Tabulka_komentare." ON ".Tabulka_clanky.".id = ".Tabulka_komentare.".id_temy
GROUP BY ".Tabulka_clanky.".id
ORDER BY
".Tabulka_clanky.".id ASC
";

díky všem za pomoc :-)
krteczek
krteczek
Profil
mitr: Omlouvám se a díky, mne to zrovna napadlo :-) se spojováním tabulek nemám žádné zkušenosti ale vzpoměl jsem si na to co psali na linuxsoftu (četl jsem to asi pred dvema hodinama), o pořadí těch váběrových klauzulí a že order by je až poslední
krteczek
mitr
Profil
Když se na to teď koukám v tom okleštěném stavu ...
komentare.id_temy je sloupec ktery obsahuje id clanku doufam ? protoze pokud id tema (kategorie) tak to samozrejme nemuze fungovat :)
krteczek
Profil
mitr: jedne se jen o jednoduche forum, kde jsou publikované články a registrovaní useri muzou pridavat komentare, nemá více urovní jen clanky alias temy a komentare
krteczek
Kajman_
Profil *
Pokud je v pocet null místo nuly, tak se to řeší např. takto

IFNULL(COUNT(".Tabulka_komentare.".id_temy),0) AS pocet
mitr
Profil
Kajman_
Tam ale nebude nikdy NULL ne ?
krteczek
Profil
nepoužívám vlastnost null, nějak mi nesedi, lip se mi počítá s hodnotou ktera je jakakoliv nebo neni vubec ale ne jakakoliv nijaka nějaka null
Leo
Profil
"nepoužívám vlastnost null, nějak mi nesedi, lip se mi počítá s hodnotou ktera je jakakoliv nebo neni vubec ale ne jakakoliv nijaka nějaka null"

Takze vlastne nemate relacni databazi... Verte, ze kdyz si na ni zvyknete, hodne si zjednodusite svuj databazovy zivot, Leo
Kajman_
Profil *
Tam ale nebude nikdy NULL ne ?

Nebude :-)

nepoužívám vlastnost null

Ve výše uvedeném případě ano... možná o tom ani nevíte.
juneau
Profil
podobna vec se resila nedavno tady, mozna to nekomu prijde uzitecne: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=2 2254
24k
Profil *
OT: Krteczek si libuje v "prasackejch zapisech" , mozna jsou vice syntakticky spravne, ale precte to sotva autor.
Toto téma je uzamčeno. Odpověď nelze zaslat.