Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Wyniki w tabeli z zapytania MySQl
nawasaqi
post 5.07.2016, 16:35:41
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
trueblue
post 5.07.2016, 17:07:34
Post #2





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Temat: mysql zmienna WHERE w jednym zapytaniu


--------------------
Go to the top of the page
+Quote Post
nawasaqi
post 7.07.2016, 06:40:07
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

Ostrzeżenie: (0%)
-----


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 ...

Ten post edytował nawasaqi 7.07.2016, 06:40:57
Go to the top of the page
+Quote Post
trueblue
post 7.07.2016, 06:56:17
Post #4





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


http://www.mysqltutorial.org/mysql-having.aspx


--------------------
Go to the top of the page
+Quote Post
nawasaqi
post 7.07.2016, 13:21:02
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

Ostrzeżenie: (0%)
-----


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...

Ten post edytował nawasaqi 7.07.2016, 13:24:22
Go to the top of the page
+Quote Post
trueblue
post 7.07.2016, 13:28:47
Post #6





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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ść.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 05:56