![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
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 ![]() //edit Edytowałeś, to i ja zedytuję Oczywiście nie musze nadmieniać, że tym samym punktacja miałaby silny związek z obiema tabelami ![]() Ten post edytował roobik 13.09.2008, 17:23:41 |
|
|
![]()
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:
2. Jeśli istnieje zmienna $points1, wysyłam zapytanie:
3. Jeśli istnieje zmienna $points2, wysyłam drugie zapytanie:
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ć? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.08.2025 - 22:50 |