Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie danych w tabeli piłkarskiej :)
Forum PHP.pl > Forum > Bazy danych > MySQL
Janek111
Witam wszystkich smile.gif

Mam problem z dokładnym posortowaniem danych w tabeli piłkarskiej.
W bazie danych mam tabele 'tabela' z kolumnami 'klub', 'mecze' (czyli ilosc rozegranych meczy), 'punkty', 'strzelone' (bramki), 'stracone' (tez bramki), 'roznica' (rowniez bramek smile.gif ). I teraz sortuje dane tak jak to powinno byc:

  1. ...
  2. ORDER BY punkty DESC, roznica DESC, strzelone DESC, stracone ASC ...


I wszystko jest w porządku, ale jesli okaze się ze dwie lub wiecej druzyn ma tyle samo punktow, taka sama roznice bramek i tyle samo straconych i strzelonych, to trzeba sortować według bezpośrednich spotkań. Nie bardzo wiem jak to zrobić. Wymyslilem sobie ze utworze tabele 'wyniki' z kolumnami meczID, klub1, klub2, wynik1 (bramki klubu1 w danym meczu), wynik2 (bramki klubu2) i bede tu zapisywal wyniki kazdego meczu. No i można by tą tabele jakoś wykorzystać ale nie wiem jak dry.gif Trzeba wziąć pod uwage mecz jakiś dwóch drużyn i rewanż (chyba że rewanż nie został jeszcze rozegrany to pod uwage trzeba brać tylko pierwszy mecz). Jak byście mieli jakiś pomysł to piszcie. Z góry dzięki smile.gif
bodhi
Ja zrobiłem coś takiego w php.
Janek111
No ja też robie w php, ale wykorzystuje baze danych:) Trzeba stworzyć jakieś połączenie między 2 tabelami napewno.
Radarek
Cytat(Janek111 @ 2006-01-31 16:43:02)
No ja też robie w php, ale wykorzystuje baze danych:) Trzeba stworzyć jakieś połączenie między 2 tabelami napewno.

Cytat(bodhi @ 2006-01-31 16:12:17)
Ja zrobiłem coś takiego w php.


Zapewne chodzilo mu o to, ze dane sortowal na poziomie php a nie mysql.
Ja tez swego czasu robilem cos takiego i takze sortowalem na poziomie php. Mozesz zrobic na poziomie sql, ale nie zrobisz tego 1 zapytaniem, musialbys napisac sobie jakas ladna procedurke sqlowa. Jesli chcesz robic z poziomu php to zrob tak:
-pobierz sobie dla kazdego gracza wszystkie dane (pkt, mecze, wygrane, przegrane itp)
-nastepnie napisz sobie funkcje sortujaca, ktora w momencie gdy bedzie porownywac 2 gosci i do okreslenia kto jest wyzej/nizej bedzie potrzebowac wyniki ich bezposrednich spotkan to sobie pobierze z mysl wyniki i na tej podstawie zdecyduje
bodhi
Cytat
Zapewne chodzilo mu o to, ze dane sortowal na poziomie php a nie mysql.

Dokładnie. W bazie miełem wyniki spotkań. Pobierałem, zliczałem punkty i gole w tabeli, dla indentycznej ilości punktów zliczałem minitabelki i na tej podstawie ustalałem kolejność w funkcji sortującej. moja tabela
Janek111
Dzięki, napisałem funkcje i teraz wszystko jest wporządku smile.gif
Jeszcze jedno pytanie.
Mam kod do wyświetlania tabeli:
  1. <table width='75%' cellspacing='0' cellpadding='0'>
  2. <tr>
  3. <td></td>
  4. <td>Drużyna</td>
  5. <td>Mecze</td>
  6. <td>Punkty</td>
  7. <td>Zwycięstwa</td>
  8. <td>Remisy</td>
  9. <td>Porażki</td>
  10. <td>Strzelone</td>
  11. <td>Stracone</td>
  12. <td>Różnica</td>
  13. </tr>
  14. <?php
  15. for($a=0; $a<$ile_znalezionych; $a++)
  16. {
  17. $nr = $a+1;
  18. echo "<tr>";
  19. echo "<td>$nr </td>";
  20. for($b=0; $b<9; $b++)
  21. {
  22. echo '<td>'.$tabela[$a][$b].'</td>';
  23. }
  24. echo "</tr>";
  25. }
  26. echo '</table>';
  27.  
  28. ?>


Chodzi mi o zmienną '$nr'. Jak zrobić, w przypadku kiedy kilka drużyn będzie na tym samym miejscu, żeby '$nr' przy tych klubach miało taką samą wartość a następne $nr było większe o tyle ile druzyn było na jednym miejscu. Naprzykład:
3. Druzyna1
3. Druzyna2
5. Druzyna3
albo
3. druzyna1
3. druzyna2
3. druzyna3
6. druzyna4
bodhi
Wymyśl coś. Np. zapamiętuj w zmiennej ilość punktów poprzedniej drużyny, jeżeli bieżąca drużyna ma taką samą to nie zwiększaj jej numeru tylko zwiększaj inną zmienną jąkąś offset, a potem do numeru kolejnej która ma już inną ilość punktów dodawaj offset.
Janek111
Nie wiem czy Cie dobrze zrozumialem ale, wtedy będą brane pod uwage punkty, a bezpośrednie spotkanie już nie.
koala
Nie znam się na MySQL ale na temat ekstraklasy piłkarskiej znalazłem cos takiego:
http://www.gajdaw.pl/bd/sql.html
Jest tam sporo przykładów z zapytaniami do bazy.
Może Ci się przyda.
bodhi
Cytat
Nie wiem czy Cie dobrze zrozumialem ale, wtedy będą brane pod uwage punkty, a bezpośrednie spotkanie już nie.

Oczywiście masz rację. smile.gif
Janek111
No, więc trzeba do tego podejść z 3 strony biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.