Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Wyniki w tabeli z zapytania MySQl
Forum PHP.pl > Forum > Przedszkole
nawasaqi
Witam serdecznie. Mam problem z rozwiązaniem pewnego zagadnienia. Próbuje sobie stworzyć narzędzie do analiz typów piłkarskich i mam 2 tabele z danymi:
1 tabela o nazwie: `statystyka_loginy` struktura tabeli:
ID
login
link

2 tabela o nazwie: `statystyka_wyniki` struktura tabeli:
Id_typu
ID_user
dzien
spotkanie
wynik
miesiac
rok
zysk


Zrobiłem sobie zapytanie SQL:
  1. SELECT a.Id,a.link,a.login,b.Id_user,b.miesiac,b.rok,SUM(b.zysk) FROM statystyka_loginy a LEFT OUTER JOIN statystyka_wyniki b ON a.Id = b.Id_user GROUP BY b.Id_user,b.miesiac ORDER BY `a`.`login` ASC


I do tego momentu wszystko jest OK.

Teraz próbuję wydobyć dane by pokazać je w tabeli w następujący sposób
login|zysk za miesiąc czerwiec|zysk za miesiąc maj|.

Czyli SQL zwraca mi dane w postaci:
  1. ID link login Id_user miesiac rok SUM(b.zysk)


Z wartościami wygląda to tak:
23 ./kuras KURAS 23 6 2016 432
23 ./kuras KURAS 34 7 2016 30
44 ./zemel ZEMEL 44 6 2016 -23
44 ./zemel ZEMEL 44 7 2016 -98

I teraz chciałbym aby w php zrobić tabelę która by zwracała wyniki w postaci:
login miesiac 06 miesiac 07
KURAS 432 30
ZEMEL -23 -98

I nie wiem jak problem obejść żeby dało mi wynik jak powyżej. Z góry dziękuję za pomoc.
trueblue
Temat: mysql zmienna WHERE w jednym zapytaniu
nawasaqi
Mam jeszcze pytanie moje zapytanie wygląda tak:
  1. SELECT a.Id,a.link,a.login,SUM(b.zysk),
  2. COALESCE(SUM(CASE WHEN b.miesiac=6 THEN b.zysk END),0) miesiac6,
  3. COALESCE(SUM(CASE WHEN b.miesiac=7 THEN b.zysk END),0) miesiac7
  4. FROM statystyka_loginy a LEFT OUTER JOIN statystyka_wyniki b ON a.Id = b.Id_user
  5. GROUP BY b.ID_user
  6. ORDER BY miesiac6 DESC


I teraz chciałbym aby pokazywało wartości które są większe od 100 w obu tabelach miesiac6 i miesiac7. Czyli coś pokroju
  1. WHERE miesiac6>100 AND miesiac7>100

Ale coś mi to nie wychodzi ...
trueblue
http://www.mysqltutorial.org/mysql-having.aspx
nawasaqi
Super dzięki kolego nawet nie wiedziałem że taka fajna funkcja jest w SQL ale ogarnąłem temat wink.gif

  1. SELECT a.Id,a.link,a.login,SUM(b.zysk),
  2. COALESCE(SUM(CASE WHEN b.miesiac=6 THEN b.zysk END),0) miesiac6,
  3. COALESCE(SUM(CASE WHEN b.miesiac=6 THEN 1 END),0) ilosc_typow6,
  4. COALESCE(SUM(CASE WHEN b.cel='pudlo' AND b.miesiac=6 THEN 1 END),0) pudlo6,
  5. COALESCE(SUM(CASE WHEN b.cel='trafiono' AND b.miesiac=6 THEN 1 END),0) trafione6,
  6. COALESCE(SUM(CASE WHEN b.miesiac=7 THEN b.zysk END),0) miesiac7,
  7. COALESCE(SUM(CASE WHEN b.miesiac=7 THEN 1 END),0) ilosc_typow7,
  8. COALESCE(SUM(CASE WHEN b.cel='pudlo' AND b.miesiac=7 THEN 1 END),0) pudlo7,
  9. COALESCE(SUM(CASE WHEN b.cel='trafiono' AND b.miesiac=7 THEN 1 END),0) trafione7
  10. FROM statystyka_loginy a LEFT OUTER JOIN statystyka_wyniki b ON a.Id = b.Id_user
  11. GROUP BY b.ID_user
  12. HAVING miesiac6>100 AND miesiac7>100
  13. ORDER BY miesiac6 DESC


To mam jeszcze jedno pytanie ostatnie czy można jeszcze w to upchnąć obliczanie % skuteczności questionmark.gif czyli skutecznosc6=(trafione6/ilosc_typow6)*100 oraz skutecznosc7=(trafione7/ilosc_typow7)*100??
Z góry dzięki za pomoc...
trueblue
Musisz rozwinąć podany wzór (wkładając tam analogiczne obliczenia).

Ewentualnie możesz całość wykonać z podzapytaniem. Wtedy w pierwszym policzyć: zysk, pudło i trafione.
W zewnętrznym zapytaniu obliczyć ilość typów (suma pudło+trafione) oraz skuteczność.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.