Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Schemat działania, usuwanie i aktualizacja kilku rekordów w bazie
warna
post 13.09.2008, 16:59:11
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 15.04.2006

Ostrzeżenie: (0%)
-----


Witam. Tym razem na dobre utknąłem i muszę zwrócić się do Was o pomoc. Postaram się opisać sytuację w miarę obrazowo:
[ kolejka ]
- mecz
- mecz
- mecz

W każdym meczu mam 2 drużyny, w zależności od ilości strzelonych bramek przydzielane są punkty (2 lub 1). Trzymam je w tabeli z drużynami w osobnym polu.

Przy usuwaniu/edycji wyniku meczu dane dotyczące punktów zmieniają się w tabeli drużyn. Teraz jeśli chciałbym usunąć całą kolejkę. Co za tym idzie muszę usunąć mecze do niej należące i zredukować punkty drużyn za usuwane mecze. I już zaczynają się schody.

Widzę na razie takie rozwiązanie:
- pobranie id meczy, które należą do usuwanej kolejki
- razem z nimi pobieram id drużyn, które grały w danym meczu
- pętla (-.-)" z 2 zapytaniami aktualizującymi punkty dwóch drużyn
- pętla usuwająca mecze o pobranych wcześniej id
- usunięcie kolejki

Istotna część struktury tabel:
Cytat
KOLEJKI
- `queue_id` id kolejki

Cytat
MECZE
- `match_id` id meczu
- `queue_id` id kolejki, do której należy mecz
- `team1` id drużyny nr 1
- `team2` id drużyny nr 2
- `result` rezultat (możliwe jest 5 stanów: 0,0 - wynik 0:0; 1,1 - remis; 2,0 - pierwsza drużyna wygrała; 0,2 - druga drużyna wygrała; 3,3 - pole z wynikami nie zostało jeszcze uzupełnione)

Cytat
DRUŻYNY
- `team_id` id drużyny
- `team_points` liczba punktów uzyskanych przez drużynę


Ma ktoś może pomysł na lepszy schemat działania? Te pętle przy dużej ilości meczy (średnio jest ich 6-7) mogą mi poderżnąć maszynę.

Pozdrawiam.

Ten post edytował warna 13.09.2008, 17:20:53
Go to the top of the page
+Quote Post
roobik
post 13.09.2008, 17:21:53
Post #2





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Mimo, że nie znam się na punktacji meczów, to proponuję dodać pole o nazwie "pkt" i wpisać tyle punktów, ile zwycięska drużyna zdobyła.
Jeśli zaś jest podział punktów, to przydałyby się dwa pola :
- pkt_a (punkty drużyny 1
- pkt_b - punkty drużyny 2
I moim zdaniem usuwanie rekordów byłoby już tylko formalnością - usuwając rekord - usuwane by były tym samym punkty smile.gif
//edit
Edytowałeś, to i ja zedytuję
Oczywiście nie musze nadmieniać, że tym samym punktacja miałaby silny związek z obiema tabelami winksmiley.jpg

Ten post edytował roobik 13.09.2008, 17:23:41
Go to the top of the page
+Quote Post
warna
post 13.09.2008, 18:56:46
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 15.04.2006

Ostrzeżenie: (0%)
-----


W zależności od tego jaki wpiszę wynik meczu i jaki był poprzedni stan pola result tyle dodaje punktów danej drużynie. Więc po co mi dwa kolejne pola o takiej samej funkcji?

Chodzi mi o to, czy istnieje alternatywa dla tych pętli z zapytaniami? Inaczej jeszcze: czy można w jednym zapytaniu uaktualnić wiele wartości jednego pola?

Teraz przy edycji/usuwaniu jednego meczu wygląda to tak:

1. Zbieram informacje do zmiennych ile punktów danej drużynie odjąć. Masa porównań i warunków (większe, mniejsze, równe, puste, itp, itd). W zależności od tego, czy punkty będą odejmowane, czy dodawane mają różne wartości. Np:
  1. <?php
  2. $points1 = 1;
  3. $points2 = -1;
  4. ?>


2. Jeśli istnieje zmienna $points1, wysyłam zapytanie:
  1. UPDATE teams SET team_points = team_points + $points1 WHERE team_id = $team1


3. Jeśli istnieje zmienna $points2, wysyłam drugie zapytanie:
  1. UPDATE teams SET team_points = team_points + $points2 WHERE team_id = $team2


Oczywiście $team1 i $team2 zawierają id danej drużyny, której zmieniamy punktację.

Załóżmy teraz, że miałbym kilkanaście drużyn do uaktualnienia. Da radę połączyć zapytania, czy muszę je pojedynczo wysyłać?
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:50