Autor Zpráva
jDanek
Profil *
Zdravíčko všem.

Proč mi tohle vrací pouze 1 řádek?

$sql=("SELECT c.*, cr.*, sum(cr.ratting)
 FROM `"._mysql_prefix."-kliniky` c    
 LEFT JOIN `"._mysql_prefix."-clinic-ratting` cr ON (c.id=cr.clinic)
 ORDER BY skupina ASC"

a tohle mi vrací normálně celý seznam

$sql=("SELECT c.*, cr.*
 FROM `"._mysql_prefix."-kliniky` c    
 LEFT JOIN `"._mysql_prefix."-clinic-ratting` cr ON (c.id=cr.clinic)
 ORDER BY skupina ASC"

potřebuju docílit toho, aby v tabulce clinic-rating se sečetli hlasy a potřebuju spočítat počet řádků... (co řádek to 1 hlasující (karta pacienta) ) proto jsem pracoval se sum() a count() , ale vrací mi to vždy jen 1 řádek a nevím proč
ShiraNai7
Profil
Pokud chceš všechny řádky, tak si SUM() udělej v dalším dotazu. Dohromady to nejde (ani to moc nedává smysl).
Tori
Profil
jDanek:
Chybí GROUP BY.
OT: A asi by to mělo být "clinic-rating", s jedním t. Sloveso rat znamená lovit krysy nebo prásknout někoho poldům.
jDanek
Profil *
@ShiraNai7: je to pro AdminExtend ... každý řádek = 1 klinika (stránkováno po 15) a já potřebuju pro každou kliniku zvlášť sečíst a vypočítat hodnocení... proto jsem se to snažil řešit v 1 dotazu...
@Tori: není to moje DB... jen pomaham... takhle pojmenovany uz to bylo...
ShiraNai7
Profil
jDanek:
Pokud ti to nepůjde přes GROUP BY (což asi nepůjde, když potřebuješ všechna data a ještě s LIMITem), tak si tam přidej poddotaz, kterým načteš potřebný součet. Lepší poddotaz v rámci jednoho dotazu než 15 dalších individuálních dotazů.

Např.

$sql = "SELECT %columns%,(SELECT SUM(t2.) FROM zbytek si domyslíš, můžeš použít data z joinů nadřazeného dotazu) rating_soucet ... zbytek dotazu ...";
jDanek
Profil *
zjistil jsem že např. tenhle dotaz vrací relevantní výsledky.... problém je že bez WHERE to vraci nesmyli

SELECT c.id as cid, cr.id as crid, c.*, cr.*, sum(cr.ratting), count(cr.id)
FROM `sunlight-kliniky` c    
LEFT JOIN `sunlight-clinic-ratting` cr ON (cr.clinic=c.id)
WHERE clinic=1

@ShiraNai7: zkusím ten poddotaz...

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: