Autor | Zpráva | ||
---|---|---|---|
321a Profil * |
#1 · Zasláno: 28. 5. 2009, 09:26:36
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 |
#2 · Zasláno: 28. 5. 2009, 09:29:19
Co delam spatne?
Dáváš do dotazu víc tabulek, než je zapotřebí. Odkud jsou sloupce "prijmeni" a "jmeno"? |
||
321a Profil * |
#3 · Zasláno: 28. 5. 2009, 09:33:42
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 |
#5 · Zasláno: 28. 5. 2009, 10:44:53 · Upravil/a: TomášK
Edit: vyřešeno výše, než jsem to dopsal
|
||
321a Profil * |
#6 · Zasláno: 28. 5. 2009, 13:09:45
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 * |
#7 · Zasláno: 28. 5. 2009, 14:08:16
Obecným jedním dotazem to asi nepůjde. Spíš to zavání špatně navrženou strukturu tabulek.
|
||
Časová prodleva: 15 let
|
0