Zliczanie wartości rekordów zależnie od warunku

Odpowiedz Nowy wątek
2014-12-18 22:08
Mikele
0

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.

    SELECT k1.name, SUM( Mecz.gset ) , SUM( Mecz.pset )
    FROM Mecz
    JOIN Klub k1 ON k1.id_klub = Mecz.gospodarz
    GROUP BY k1.id_klub
 
    SELECT k2.name, SUM( Mecz.pset ) , SUM( Mecz.gset )
    FROM Mecz
    JOIN Klub k2 ON k2.id_klub = Mecz.przeciwnik
    GROUP BY k2.id_klub

Z góry dziękuję za pomoc. Pozdrawiam

Pozostało 580 znaków

2014-12-18 22:44
0

daj ddl tabel i przykładowe dane dla jednego meczu bo ja nie potrafię sobie wyobrazić jak to masz. Wg tego co napisałeś to oba zapytania powinny zwrócić taką samą wartość pól sum(pset) i sum(gset)


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2014-12-19 08:10
Mikele
0

Wygląda na to, że na innym forum udało mi się znaleźć odpowiedź. Wklejam tutaj, bo być może się komuś to jeszcze przyda

    SELECT k.name, g.gsum+p.psum AS wygrane, g.psum+p.gsum AS przegrane
    FROM klub k
    JOIN
    ( SELECT gospodarz, SUM(gset) AS gsum, SUM(pset) AS psum
    FROM mecz
    GROUP BY gospodarz ) g
    ON g.gospodarz = k.id_klub
    JOIN
    ( SELECT przeciwnik, SUM(gset) AS gsum, SUM(pset) AS psum
    FROM mecz
    GROUP BY przeciwnik ) p
    ON p.przeciwnik = k.id_klub

Pozostało 580 znaków

2014-12-19 12:05
0

http://sqlfiddle.com/#!2/7699de/4

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0