Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcja SUM() - chyba trudne pytanie
Anba45
post 6.08.2006, 12:05:39
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.04.2006

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


Na kilku forach php-MySQL znalazłem ciekawe informacje na temat funkcji SUM(). Nie jestem Herkulesem MySQLowym a zaciekawił mnie problem przedstawiony przez Krzyśka (ZERO odpowiedzi na ten temat). Chodzi o przykład segregacji dobrze przedstaiony na przykładzie JEDNEJ tabeli rozgrywek piłkarsnich gdzie jedna drużyna ("aa" lub"bb"..) występuje w dwóch kolumnach (Gospodzrze a innym razem jako Goście). Problem polega na sprytnym wyłuskaniu informacji a dużynie i uporządkowaniu danych w postaci tabeli do WWW.

Przedstawiony problem wygląda następująco:

=====cytat======================================

Mam w bazie danych "Mecze" dwie tabele:

Rozgrywki

Lp_Gosp_Goscie_Gole1_Gole2_Pkt1_Pkt2

1_aa_bb_3_1_2_0
2_aa_cc_5_2_2_0
3_cc_aa_1_4_0_2
4_dd_bb_1_1_1_1
5_ee_gg_6_4_2_0
6_gg_bb_1_5_0_2
8_bb_cc_9_3_2_0


Nazwy klubów pobierane są z bazy Kluby:

Kluby

Lp_Nazwa_IdKlubu

1_aa_1
2_cc_3
3_bb_2
4_dd_4
5_ee_5
6_ff_6
7_gg_7



Potrzebuję w wyniku tabelę na stronie WWW


Nazwa klubu_Gole u siebie_Gole na wyjeździe_Punkty u siebie_Punkty na wyjeździe_Meczy u siebie_Meczy wyjazdowych

aa_8_4_3_3_2_1
bb_9_7_2_3_1_3
cc_1_5_0_0_1_2
dd_1_NG_1_NG_1_0 ----> zamiast NG (nie grał) może być: 0

itd...



Próbowałem czegoś takiego ale to jest złe bo sumuję tylko gospodarza LUB gościa


$wynik = mysql_query ("SELECT Kluby.IdKlubu, Kluby.Nazwa, SUM(Rozgrywki.Gol1), SUM(Rozgrywki.Pkt1) FROM Rozgrywki, Kluby WHERE Kluby.IdKlubu = Rozgrywki.Gosp GROUP BY Kluby.Nazwa;") or
die ("błąd w pytaniu");


Jak to załatwić prostym poleceniem?questionmark.gif? Trzeba chyba stworzyć chwilowe dwie tabele - sam nie wiem.

Krzysiek

=====koniec cytatu======================================

Pozdrawiam
Go to the top of the page
+Quote Post
mariuszn3
post 6.08.2006, 14:03:21
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

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


A dlaczego tak bardzo ważne jest by było to jedno polecenie? Na moje oko nie da się tego zrobić jednym zapytaniem bez jakiś strasznych wygibasów (nie konieniecznie tymczasowa tabela) i myślę, że lepiej (też dla wydajności ale trzeba by to było przetesteować) by było pozostać przy dwóch.

EDIT:
A jednak.. przyszło mi do głowy coś takiego (nie sprawdzałem):
  1. SELECT k.`nazwa`,
  2. SUM(r1.`gole1`) AS 'gole_u_siebie',
  3. SUM(r2.`gole2`) AS 'gole_na_wyjezdzie',
  4. SUM(r1.`pkt1`) AS 'punkty_u_siebie',
  5. SUM(r2.`pkt2`) AS 'punkty_na_wyjezdzie',
  6. COUNT(r1.*) AS 'mecze_u_siebie',
  7. COUNT(r2.*) AS 'mecze_na_wyjezdzie'
  8. FROM `rozgrywki` AS r1
  9. INNER JOIN `kluby` AS k ON (r1.`gosp` = k.`idklubu`)
  10. INNER JOIN `rozgrywki` AS r2 ON (k.`idklubu` = r2.`goscie`)
  11. GROUP BY k.`nazwa`


EDIT2:
To jest temat na dział bazy danych a nie php.

Ten post edytował mariuszn3 6.08.2006, 20:11:23
Go to the top of the page
+Quote Post
Anba45
post 6.08.2006, 20:07:14
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.04.2006

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


Dzięki - myśl jest przednia ale muszę nad tym popracować bo ciągle wywala mi błąd i coś nie mogę się dopatrzeć gdzie...
Dzięki również za przypomnienie o innym dziale forum. Dam tam również ten temat może znajdzie się inne rozwiązanie (choć to wygląda dobrze ale wymaga doszlifowania z mojej strony)....
Go to the top of the page
+Quote Post
mariuszn3
post 6.08.2006, 20:12:42
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

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


Poprawiłem jeden drobny błąd.. który na pewno wywalał mysqla.. więc na pewno teraz jest trochę lepiej smile.gif
Go to the top of the page
+Quote Post
nospor
post 6.08.2006, 21:18:42
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przenosze. na przyszlosc prosze nie duplikowac tematow


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 12.06.2025 - 12:37