Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Złączenie wszystkich rekordów w jeden
shark121
post
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.

  1. SELECT M.`id` AS `match_id` , M.`team1_id`, M.`team2_id`, M.`date`, M.`event_id`, M.`group_id`, M.`hltv`, M.`stream`, MP.`map_name`, MP.`score_team1`, MP.`score_team2` FROM `matches` M, `matches_maps` MP WHERE M.`id` = MP.`match_id`
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
shark121
post
Post #2





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ć)
  1. CREATE TABLE `mecze` (
  2. `id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
  3. `team1_id` INT( 11 ) NOT NULL ,
  4. `team2_id` INT( 11 ) NOT NULL ,
  5. INDEX ( `id` )
  6. )


tabela mecze_mapy z danymi dotyczącymi każdej mapy
  1. CREATE TABLE `mecze_mapy` (
  2. `id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
  3. `mecz_id` INT( 11 ) NOT NULL ,
  4. `team1_score` INT( 11 ) NOT NULL ,
  5. `team2_score` INT( 11 ) NOT NULL ,
  6. INDEX ( `id` )
  7. )


Przykładowe dane:
  1. INSERT INTO `mecze` ( `id` , `team1_id` , `team2_id` ) VALUES (NULL , '1', '2'), (NULL , '1', '3');
  2. INSERT INTO `mecze_mapy` ( `id` , `mecz_id` , `team1_score` , `team2_score` ) VALUES (NULL , '1', '16', '10'), (NULL , '1', '16', '10'), (NULL , '2', '16', '5'), (NULL , '2', '10', '16'), (NULL , '2', '5', '16');


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 18:03