Autor Zpráva
oBc
Profil *
"SELECT f.*,
k.count(id)
FROM
users_fotky f
LEFT JOIN
users_fotky_kom k on k.idfotka = f.id

WHERE
f.iduser =5
");

Neviem ako to ma ten k.count(id) tam byt napisany. Wobec tento select neprejde.
Tymto chce, zistim pocet komentarov k fotke.
Ako to ma byt?
Kajman_
Profil *
zkuste

SELECT f.*,
(select count(*) from users_fotky_kom k where k.idfotka = f.id) komentaru
FROM
users_fotky f
WHERE
f.iduser =5
radozaj
Profil
Neviem, či som pochopil, dám ti môj príklad, ako zistiť počet komentárov k fotke:
SELECT count(*) FROM user_fotky HAVING iduser=5;
oBc
Profil *
SELECT f.*,
(select count(*) from users_fotky_kom k where k.idfotka = f.id) komentaru
FROM
users_fotky f
WHERE
f.iduser =5


Takto to ja nechcem, musi tam byt JOIN
oBc
Profil *
SELECT count(*) FROM user_fotky HAVING iduser=5;

Tak toto v ziadnom pripade.


Ide o to, ze zistijem vsetky infotmacie o fotke v users_fotky ale potom mam tabulku users_fotky_kom kde su komentare (id fotka)

chapete?
Ako to teda mam dat?
radozaj
Profil
Ak treba zistiť počet komentárov k fotke, spravil by som to takto:
SELECT id_fotka,count(*) as 'spolu' FROM users_fotky_kom GROUP BY id_fotka;
oBc
Profil *
ja potrebujem ziskat vsetky informacie o fotke a+ pocet komentarov v tabulke komentare, akO?
radozaj
Profil
A čo takto to k. dať k id ?

"SELECT f.*,
count(k.id)
FROM
users_fotky f
LEFT JOIN
users_fotky_kom k on k.idfotka = f.id

WHERE
f.iduser =5
");

Ale ešte by som tam dorobil ten GROUP BY
oBc
Profil *
To tiez nejde, mozes si to vyskusat...
tak ako sa to ma vlastne spravit?
radozaj
Profil
Nefunguje? Tak potom takto:
"SELECT users_fotky.*, count(users_fotky_kom.id)

FROM users_fotky
JOIN users_fotky_kom ON users_fotky_kom.idfotka = users_fotky.id
WHERE users_fotky.iduser = '5'
GROUP BY users_fotky.iduser;
");


Som si to aj skúšal na mojom príklade a funguje to. Takže ak to nepôjde, chyba už môže byť len v názvoch. To je to moje prevedenie:
SELECT kategorie. *, count(recepty.recept)

FROM kategorie
JOIN recepty ON recepty.id_kategoria = kategorie.id_kategoria
WHERE kategorie.id_kategoria = '10'
GROUP BY kategoria;

Je to podobný príklad: hľadám počet receptov v kategórii pre kategóriu 10, pričom vidím celý výpis (vlastností) kategórii.

PS. Už to musí fungovať
oBc
Profil *
OK ciastocne funguje, len este ked dam nakoniec

.
.
.
GROUP BY
users_fotky.id
ORDER by poradie LIMIT ".$strana_zobraz .", ".$pocet_jedna_stranka."");


tak to vobec nereaguje


a potom otazka:

naco je dobre to: GROUP BY users_fotky.id ??


dIKY MOC
Kajman_
Profil *
tak to vobec nereaguje

Ani není nic v mysql_error? Třeba, že poradi je v obou tabulkách neví, které poradi myslíte?
oBc
Profil *
Uz to ide chyba bola, ze som mal INNER JOIN, dal som LEFT a ide :)

vazne nechapem aky je medzi tym rozdiel aj ked mi to uz niektory vysvetlovali ale furt to poriadne nechapem..:((

a este ta posledna otazka:


naco je dobre to: GROUP BY users_fotky.id ??
Kajman_
Profil *
http://www.linuxsoft.cz/article.php?id_article=864
radozaj
Profil
oBc
naco je dobre to: GROUP BY users_fotky.id ??

vysvetlím ti to na jednoduchom príklade:
mám takúto tabuľku:
-----------------------
| DEN |    JAZYK      |
-----------------------
|  1  |    MySQL      |
-----------------------
|  1  |     PHP       |
-----------------------
|  2  |    MySQL      |
-----------------------
|  2  |  JavaScript   |
-----------------------
|  2  |    Pascal     |
-----------------------
|  3  |    XHTML      |
-----------------------

A chcem zistiť, koľko jazykov som mal doteraz:
SELECT count(jazyk) as 'spolu' FROM tabulka;

Ale teraz chcem vypísať počet jazykov v jednotlivých dňoch:
SELECT den,count(jazyk) as 'spolu' FROM tabulka GROUP BY den;

Takže, neviem to odborne vysvetliť, ale keď používaš funkcie (sum, count, max, min, avg ...) a chceš ich robiť v jednej tabuľke zvlášť pre rovnakú vlastnosť, použiješ GROUP BY.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0