Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zaawansowane sortowanie tabel, Tabela ligowa
markonix
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Ja nie znam tych kryteriów sortowania, ale na ten moment mogę podpowiedzieć tyle (nie jestem pewien czy to wiesz), że od takich sortowań jest funkcja usort. Jeśli będziesz sortował liczby malejąco, to coś w tym stylu będzie:
  1. usort($tablica, function ($a, $b) {
  2. $wynikA = // skomplikowane operacje na $a;
  3. $wynikB = // skomplikowane operacje na $b
  4. return $wynikB - $wynikA;
  5. });

Ale pewnie to wiesz jak dajesz radę ze skomplikowanym SQL-em.
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: 28.12.2025 - 14:48