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: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%)
|
Jeśli to jest aż tak skomplikowane, to najlepiej krok po kroku i w którymkolwiek momencie przewagi którejkolwiek z drużyn od razu zwrócić wartość mniejszą od 0, gdy A będzie wyżej i większą od 0 dla przewagi B. przypadku remisu na każdym etapie, nie zwracasz jeszcze nic. W ten sposób kod będzie całkiem ładny (IMG:style_emoticons/default/smile.gif)
Przykład:
Tym sposobem każdy etap liczysz sobie oddzielnie, nie musisz się przejmować poprzednim, przez co łatwiej będzie ogarnąć kod. Przykładowo, na etapie drugim wiesz już, że poprzednio był remis, więc zajmujesz się tylko logiką tego drugiego etapu. |
|
|
|
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
markonix Z funkcji nigdy nie korzystałem ale jest dobrym pu... 2.03.2015, 02:31:18
markonix Też ładny sposób jednak samo sortowanie u mnie nie... 2.03.2015, 11:49:22 ![]() ![]() |
|
Aktualny czas: 29.12.2025 - 10:53 |