Autor Zpráva
321a
Profil *
Ahoj, mam nasledujici MySQL dotaz:
SELECT v.a_id, sum(v.hodin) AS hodin, concat( prijmeni, ' ', jmeno ) AS jmeno
FROM (vyzo v)
JOIN uzivatel uz ON (v.a_id = uz.iduzivatel) 
JOIN unit un ON (un.a_id = uz.iduzivatel)
GROUP BY v.a_id 


Dotaz se sice vypise, ale v funkce sum() nejak chybne spocita hodnoty hodin. Mam napriklad v tabulce vyzo uzivatele s id 3,ktery je na dvou radcich a hodiny ma 10 a 1. Misto toho aby soucet byl 11 mi to vyhodi 88. Co delam spatne?

Predem diky.
Mastodont
Profil
Co delam spatne?
Dáváš do dotazu víc tabulek, než je zapotřebí. Odkud jsou sloupce "prijmeni" a "jmeno"?
321a
Profil *
ty jsou z tabulky uzivatel. Ale tabulku unit budu taktez potrebovat, pro vypsani dalsich hodnot. Tam je sloupec a_id a to je id uzivatele, ktere v tom vypisu musi sedet.
Kajman_
Profil *
Groupněte si tabulky ještě před spojením.

SELECT s.a_id, s.hodin, concat( prijmeni, ' ', jmeno ) AS jmeno
FROM (SELECT v.a_id, sum(v.hodin) AS hodin FROM vyzo v GROUP BY v.a_id) s
JOIN uzivatel uz ON (s.a_id = uz.iduzivatel) 
JOIN unit un ON (un.a_id = uz.iduzivatel)
TomášK
Profil
Edit: vyřešeno výše, než jsem to dopsal
321a
Profil *
ahaa takhle :) super dekuji mockrat. Jeste jsem se chtel zeptat na jednu vec. V tabulce unit je mimojine sloupec nazev. Ja bych potreboval prevest radky z tohoto sloupce na sloupce s název radku.
Kdyz uvedu priklad:
tabulka unit:
Nazev
cerna
zelena
bila

v selectu bych potreboval bych udelat:
cerna|zelena|bila
3*2|1*3 |2*6

aby proste u kazdeho radku v tom novem sloupci udelal nejakou operaci, pro priklad uvadim nasobilku. Ty cisla se budou brat dale z vyzo a unit.

Predem diky moc
Kajman_
Profil *
Obecným jedním dotazem to asi nepůjde. Spíš to zavání špatně navrženou strukturu tabulek.

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