Mam taki oto problem:
Zastanawiam się jak zrobić bazę danych do meczów piłkarskich.
Chodzi o to że jest tabela MECZ i jak to w każdym meczu (najczęściej bywa) jest GOSPODARZ i jest GOŚĆ spotkania.
no i tak, zrobiłem dwie tabele:
TABLE druzyna(id,nazwa)
TABLE mecz(id,gosc,gospodarz,id_druzyna)
Jednak będzie problem z wyborem dwóch druzyn do zapytania, które ma dopasować rekordy tak aby wiadomo było kto z kim gra.
I teraz zastanawiam się jak będzie najbardziej optymalnie zrobić. Czy np dodać jeszcze dwie następujące tabele:
TABLE druzyna_gosc(id,id_druzyna)
TABLE druzyna_gospodarz(id,id_druzyna)
i wtedy:
TABLE druzyna(id,nazwa)
TABLE mecz(id,id_gosc,id_gospodarz)
i zapytanie:
SELECT id_gosc,id_gospodarz FROM mecz AS m INNER JOIN druzyna_gospodarz AS d1 ON m.id_gospodarz = d1.id INNER JOIN druzyna_gosc AS d2 ON m.id_gosc = d2.id
nie mam pomysłu jak to zrobić, ale wydaje mi się że właśnie potrzebne są dodatkowe tabele GOSC i GOSPODARZ ktore powiązane powinny być z tabelą DRUZYNA, natomiast tabela MECZ powinna być powiązana z tabelami GOSC i GOSPODARZ
proszę o podpowiedź, dzięki
ale tak sobie myślę że to chyba też nie tak ... wydaje mi się że powinienem chyba powielić rekordy tzn. zarówno do tabeli GOSC wpisać nazwy druzyn jak i do tabeli GOSPODARZ wpisać wszystkic nazwy druzyn
problem jest w tym, że muszę pobrać dwa razy nazwę zespołu
jest jakieś zapytanie, które pobierze dwa razy tą samą kolumnę z jednej tabeli ?
ok .. sam sobie poradziłem
znalazłem podpowiedź na tej stronie:
http://www.gajdaw.pl/bd/zlozone-zapytania-sql/print.html
Wystarczą tylko dwie tabele:
DRUZYNA(id,nazwa)
MECZ(id,id_gosc,id_gospodarz)
i jeśli w tabeli MECZ będzie rekord o danych: (1,2,3) gdzie (1 kolejny rekord, 2 - druzyna o id 2 z tabeli DRUZYNA, 3 - druzyna o id 3 z tabeli DRUZYNA)
to wtedy zapytanie wystarczy zrobić tak:
SELECT k1.nazwa, k2.nazwa FROM mecz AS m INNER JOIN druzyna AS k1 ON m.id_druzyna_gospodarz = k1.id INNER JOIN druzyna AS k2 ON m.id_druzyna_gosc = k2.id
dodam, że temat można zamknąć