![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 5 Dołączył: 31.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam, staram się stworzyć pewien system meczowy dla gry multiplayer oparty o bazę danych MySQL. Pierwsza tabela zawierająca dane spotkania ma taką postać:
id | match_id | team1_id | team2_id | date | event_id | group_id Druga to szczegółowe dane na temat wyników na każdej mapie i ma ona taką postać: id | match_id | map_name | score_team1 | score_team2 Doszedłem do wniosku, że tabele te muszą być zbudowane właśnie w ten sposób, ponieważ liczba map dla danego spotkania może być różna (od 1 do nawet 5). I teraz mam pewien problem, a mianowicie jednym zapytaniem chciałbym wyciągnąć wszystkie dane meczu oraz wynik ogółem, kombinowałem coś z union select ale nie za bardzo mi to wychodzi. Na tę chwilę udało mi się jedynie napisać zapytanie wyświetlające wszystkie mapy jako oddzielne rekordy, a ja chciałbym żeby to wszystko zamieniło się w jeden wspólny.
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 194 Pomógł: 26 Dołączył: 9.01.2011 Skąd: /dev/null Ostrzeżenie: (0%) ![]() ![]() |
Użyj JOIN
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 5 Dołączył: 31.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Powiedzmy teraz, że mam 3 mapy, czy da się zrobić tak żeby bez potrzeby używania wielu dodatkowych zapytań uzyskać z trzech map w postaci jednego rekordu? Bo w tym momencie otrzymuję trzy rekordy które różnią się tylko i wyłącznie wynikami na poszczególnych mapach. Ten post edytował shark121 6.02.2011, 16:50:48 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 12 Dołączył: 31.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Wrzuć może strukturę tabel i przykładowe dane ( najlepiej w kodzie SQL ) i napisz konkretnie, jaki wynik chciałbyś osiągnąć. Czyli jakie dane meczu oraz jaki wynik ogółem chcesz uzyskać dla tych przykładowych danych. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 5 Dołączył: 31.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
No więc oto najprostszy przykład, który zobrazuje to co chce uzyskać:
tabela mecze z podstawowymi danymi meczu (okrojona wersja żeby bez zbędnych rzeczy to zobrazować)
tabela mecze_mapy z danymi dotyczącymi każdej mapy
Przykładowe dane:
No i teraz chciałbym żeby jedno zapytanie zwróciło mi dla jednego meczu jeden rekord w którym znajdą się wyniki wszystkich map (nie mam żadnego pomysłu w jaki sposób zaprezentować w ogóle te połączone wyniki). Ten post edytował shark121 6.02.2011, 17:42:46 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 12 Dołączył: 31.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź sobie wynik poniższego zapytania:
Dla danego meczu sumuje ono wszystkie wyniki dla team 1 i 2. O takie coś Ci chodziło ? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 5 Dołączył: 31.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie, sumowanie nie wchodzi w gre, bo w późniejszym etapie będę potrzebował albo ogólnego wyniku w postaci np. 2:0 lub 2:1 albo wyników poszczególnych map. W podanym przeze mnie przykładzie wyniki powinny być następujące: w meczu o id=1 wynik 2:0, a w meczu o id=2 wynik 1:2. Satysfakcjonowałoby mnie dowolne rozwiązanie, które pozwoli mi później stwierdzić rezultat której drużyny jest większy, czyli która drużyna rzeczywiście wygrała spotkanie.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 12 Dołączył: 31.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ok.
W takim razie wynik dla poszczególnego meczu:
Wynik dla poszczególnej mapy dla danego meczu:
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 5 Dołączył: 31.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki! (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:29 |