Projekt Zespołowy Baza

0

Witam,
Piszę dosyć prosty projekt, ale niestety mam problem z bazą. A dokładniej z jedną z tabel

CREATE TABLE IF NOT EXISTS `Wyniki` (
  `Sezon` text NOT NULL,
  `Druzyna_A` text NOT NULL,
  `Druzyna_B` text NOT NULL,
  `Wynik_A` tinyint(5) DEFAULT NULL,
  `Wynik_B` tinyint(5) DEFAULT NULL,
  `ID` int(100) NOT NULL AUTO_INCREMENT,
  `Data` date NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

Używam jej do przechowywania informacji o:
-Sezonie
-Id druzyny a i b, które odwołuje się do innej tabeli

  • wyniku, drużyn A i B. Np 5:4
  • oraz dacie spotkania.
    Pierwszym problemem, z którym nie umiem poradzić jest normalizacja tej tabeli do trzeciej postaci normalnej oraz wydobycie danych o:
    -Nazwa drużyny
    -Rozegrane mecze
    -Wygrane mecze
    -Remis
    -Przegrane
    -Gole strzelone
    -Gole stracone
    -Punkty (3 za wygrana, 1 remis, 0 przegrana)
    Nie oczekuje gotowego rozwiązania, tylko jakiejś porady względem tej tabeli.
0

Aż się boję zapytać czemu Druzyna_A jest typu TEXT jak jest to podobno ID. Dalej - co jeszcze chcesz normalizować? Następnie z czym dokładnie masz te problemy? Przecież masz Id drużyny więc gdzie problem. Pokaż jak próbowałeś.

0
select
  w.druzyna,
  w.nazwa,
  sum(case when gosp < gosc then 1 else 0 end) przegrane,
  sum(case when gosp = gosc then 1 else 0 end) remisy,
  sum(case when gosp > gosc then 1 else 0 end) wygrane,
  count(*) rozegranych,
  sum(gosp) strzelone,
  sum(gosc) stracone
from
(select 
  d.druzyna,
  d.nazwa,
  case when d.druzyna = w.druzyna_a then wynik_a else wynik_b end gosp,
  case when d.druzyna = w.druzyna_a then wynik_b else wynik_a end gosc
from 
  druzyna d
left join wyniki w on w.druzyna_a = d.druzyna or w.druzyna_b = d.druzyna) w

group by
  w.druzyna
order by 
  w.druzyna

http://sqlfiddle.com/#!9/07697/12/0

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