Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
Swego czasu udało mi się stworzyć zapytanie SQL, które bez PHP tworzyło mi ładną tabelę sezonu (tabela ligowa - piłka nożna) z punktami, strzelonymi bramkami itp.
Niestety posortowanie wg punktów nie zawsze zdaje zadanie bo przy remisie punktowych w grę zaczynają już wchodzić dość skomplikowane algorytmy. Przykładowo przy remisie brane są pod uwagę punkty zdobyte w meczach między remisującymi drużynami. Na pewno już tego nie dam rady czystym SQL ogarnąć dlatego już zrobię to w PHP. Jednak to też nie jest jakieś super łatwe bo zastanawiam się jak potem to i tak posortować. Infantylnie by było dodać jako indeks liczbę punktów, a potem ułamkowo dodać liczbę tych punktów. Te rozwiązanie pomijam więc przychodzą mi tylko dwie opcje: Sortowanie po kolejnych atrybutach. Drużyna A: - punktów 10 - punktów między drużynami co mają 10 - 9 - inne atrybuty (nazwa itp). Drużyna B - punktów 10 - punktów między drużynami co mają 10 - 7 - inne atrybuty (nazwa itp). I podobny pomysł tylko użyciu multiarray: $table[liczba_punktow][liczba_punktow_miedzy_remisujacymi][kolejne_warunki_s ortujace] Sortuje najpierw po liczbie punktów, potem po drugiej liczbie, potem po bilansie bramkowym itp. Jakieś sugestie i potem narzędzia aby to potem posortować bo tak wielu atrybutach/kluczach? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
Z funkcji nigdy nie korzystałem ale jest dobrym punktem zaczepienia.
Generalnie robię na razie tak: 1. Generuje normalne wyniki tabeli. 2. Obracam pętle i sprawdzam czy są jakieś remisy punktowe. 3. Remisy punktowe przekazuje do funkcji podobnej jak w kroku pierwszym czyli zapytanie SQL które jednak liczy punkty tylko dla wskazanych drużyn i tylko punkty. 4. Punkty zdobyte w tej podgrupie przypisuje do obiektu np. points_2. No i mamy tablicę z obiektami, którą trzeba posortować. Jeżeli mamy wynik z bazy w tablicach to jest gotowiec tutaj: http://php.net/manual/en/function.array-multisort.php#100534 Ja akurat mam to na obiektach ale nie musiałem powyższej edytować bo znalazłem analogiczną funkcję tutaj: http://blog.amnuts.com/2011/04/08/sorting-...comment-page-1/ Nie zmienia to faktu, że generowanie tej tabeli mocno się komplikuje i generuje troszkę zapytań ale najwyżej się pomyśli o jakimś cache.. Na razie zrobiłem tylko jedno rozwiązanie remisu, bo w tych drugich punktach też może być remis wtedy liczy się co innego i tak jest aż 5! różnych sytuacji, a 6 (wg specyfikacji) to losowanie przez włodarzy (IMG:style_emoticons/default/biggrin.gif) Ten post edytował markonix 2.03.2015, 02:33:09 |
|
|
|
markonix Zaawansowane sortowanie tabel 2.03.2015, 00:38:26
SmokAnalog Jeśli wszystko masz w bazie, to pokusiłbym się naj... 2.03.2015, 00:44:06
markonix Może troszkę źle sprecyzowałem - w bazie mam tylko... 2.03.2015, 00:47:39
SmokAnalog Ja nie znam tych kryteriów sortowania, ale na ten ... 2.03.2015, 00:52:27
SmokAnalog Jeśli to jest aż tak skomplikowane, to najlepiej k... 2.03.2015, 10:51:06
markonix Też ładny sposób jednak samo sortowanie u mnie nie... 2.03.2015, 11:49:22 ![]() ![]() |
|
Aktualny czas: 30.12.2025 - 18:26 |