Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie wartości rekordów zależnie od warunku
Forum PHP.pl > Forum > Bazy danych
Mikele7
Witam.
Siedzę sporo nad tym problemem i nie mogę znaleźć rozwiązania. Otóż chcę zrobić zliczanie wartości rekordu zależnie od sytuacji.
Sprawa wygląda tak mam dwie tabele: Mecz i Klub.
W pierwszej znajdują się wszystkie wyniki dodawane według schematu: gospodarz, przeciwnik, sety gospodarza, sety przeciwnika. Pod pierwsze kolumny wstawiane są identyfikatory klubu z tabeli Klub. Niestety dana drużyna może się znajdować zarówno jako gospodarz i jako przeciwnik. Potafię zliczyć wartości tych pól jeśli jest dana drużyna gospodarzem lub przeciwnikiem. Niestety nie wiem jak to ugryźć to w jednej komendzie sql-owskiej by liczyło dla danej drużyny wygrane i przegrane sety.
  1. SELECT k1.name, SUM( Mecz.gset ) , SUM( Mecz.pset )
  2. FROM Mecz
  3. JOIN Klub k1 ON k1.id_klub = Mecz.gospodarz
  4. GROUP BY k1.id_klub

  1. SELECT k2.name, SUM( Mecz.pset ) , SUM( Mecz.gset )
  2. FROM Mecz
  3. JOIN Klub k2 ON k2.id_klub = Mecz.przeciwnik
  4. GROUP BY k2.id_klub


Z góry dziękuję za pomoc. Pozdrawiam
mmmmmmm
Pokaż dane, to pomogę. Mogą być na sqlfiddle.com
pmir13
  1. SELECT k.name, g.gsum+p.psum AS wygrane, g.psum+p.gsum AS przegrane
  2. FROM klub k
  3. JOIN
  4. ( SELECT gospodarz, SUM(gset) AS gsum, SUM(pset) AS psum
  5. FROM mecz
  6. GROUP BY gospodarz ) g
  7. ON g.gospodarz = k.id_klub
  8. JOIN
  9. ( SELECT przeciwnik, SUM(gset) AS gsum, SUM(pset) AS psum
  10. FROM mecz
  11. GROUP BY przeciwnik ) p
  12. ON p.przeciwnik = k.id_klub
Mikele7
Wygląda na to, że działa idealnie tak jak powinno. Dzięki kolego, będę wiedział już jak w razie w coś takiego ogarnąć, bo nie sądziłem, że aż tak można łączyć te komendy. Jeszcze raz wielkie dzięki smile.gif
Dalej już sobie sam dostosuję
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.