![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 360 Pomógł: 12 Dołączył: 17.09.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam taki problem zapisuje do bazy danych ciągi od 0 do 10 dlugość 10 cyfr oddzielona przecinkiem (10,10,9,8,8,9,9,8,8,7) potrzebuje policzyć ile razy występuje dana cyfra a konkretnie aż do rozstrzgnięcia wyniku np zawdonik 1 string(21) "10,10,9,8,8,9,9,8,8,7" zawodnik 2 string(19) "9,9,9,9,8,9,9,8,8,8" jedenk i drugi zawonik mają ten sam wynik czyli 86 więc w zasadzie są na tym samy miejscu aby rozstrzygnąć kto jest lepszy należy policzyć ilość 10 ,9, 8 aż do rozstrzygnięcia czyli zawodnik 1 jest na pierwszym miejscu bo ma 2x10 a zawodnik 2 jest na drugim miejscu bo ma 0x10 jeżeli zawodniczy mają tyle samo 10 to sprawdzana jest kolejna cyfra czyli może być zawodnik 1 2x10, 3x9 4x8 zawodnik 2 2x10, 3x9, 3x8 i takie dane potrzebuje zapisać do bazy danych. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Pobierasz sobie z bazy ciąg
robisz explode obliczasz sumę - jeśli różne to wygrywa lepszy, jeśli takie same to: - sortujesz malejąco - pobierasz max z obu ciągów - jeśli różne wygrywa większy, jeśli takie same to: sprawdzasz ilość wartości - jeśli więcej to wygrywa, jeśli tyle samo zmniejszasz max -1 i znowu sprawdzasz tablice i tak do znudzenia. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim popraw strukturę bazy danych. Te wyniki (pojedyncze) powinny być osobnymi rekordami w tabeli związanej relacją wiele-do-jednego z tabelą użytkownika. Wtedy wybranie sumy jest banalnie proste:
A i sortowanie da się zrealizować na poziomie SQL-a - seria COUNT-ów na poszczególnych ocenach (GROUP BY) i zwykłe ORDER BY. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 360 Pomógł: 12 Dołączył: 17.09.2009 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
moja struktura baz danych wygląda tak
zawodnik -zaw_id -imie -nazwisko konkurencje_zawodnika -kz_id -id_zawodnika -id_konkurencji wyniki -id_zawodnika -ciag -suma -uwagi1 -uwagi2 wolał bym tego nie zmieniać bo wymagało by to przerobienia praktycznie całego kodu nad którym siedzę już trochę czasu Na razie mam coś takiego teraz tylko muszę jakoś porównać wartości z tablicy i zwrócić wynik dla zawodnik 1 2x10 a dla zawodnik 2 1x10 żeby te dane zapisać do bazy danych i jakoś sprawdzić kolejny wyniki z tablicy w przypadku kiedy 10 będzie występowało tyle samo razy
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 04:36 |