![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam problem merytoryczny jak rozwiązać listę rankingową.
Lista działa na zasadzie, że każdy kontrahent zbiera punkty w dwóch kategoriach. Chcemy wybrać tych najlepszych, czyli np 5 z jednej i z drugiej kategorii i ich nagrodzić. Dodatkowo dla osób które będą najlepsze na dwóch listach mamy dodatkową nagrodę. Załóżmy że nagrodą jest wycieczka, to dla tych 'zwykłych' mamy po jednym miejscu, a dla tych 'lepszych' mamy miejsca podwójne. Zatem lista wyglądałaby tak: | Miejsca podwójne | 1. xxx 2. yyy 3. zzz |Miejsca pojedyncze | | kat 1 | | kat 2 | 1. zjz 1. alb 2. sjs 2. emo 3. sks 3. kij 4. kgl 4. omg 5. wtf 5. imho (wysyłamy na wycieczkę 13 osób, z czego 3 mogą zabrać kogoś ze sobą) Czyli osoba ma szanse na miejsce podwójne jeśli jest na obu listach kategoriowych (ale słowo;> ). Jeżeli już ktoś trafi na liste miejsc podwójnych, to usuwamy go z listy kategorii 1 i 2, a na jego miejsce wchodzą następni. Myślałem, żeby zrobić to na jednej tabeli (w uproszczeniu): |ID_KONTRAHENTA| PUNKTY_KAT_1 | PUNKTY_KAT_2 | w jednym zapytaniu to chyba nie da rady (przynajmniej ja jestem za słaby w tym temacie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ). Myślałem żeby to zrobić na pare kroków. Czyli wybrać tych kontrahentów z kategorii 1 ktorzy maja tez punkty w kategorii 2 (jest bardzo prawdopodobne, że będą mieli w obu). z tych kontrahentów wybieramy 3-ech najlepszych (czli takich, dla których średnia z jednej i drugiej kategorii jest najwyzsza). No i tu pojawia się problem, bo może sie trafić tak, że zabierzemy 3-ech najlepszych z pierwszej kategorii i na ich miejsce musimy wciągnąć trzech nowych, ale może być też tak, że z tej listy zabierzemy tylko jednego. Czyli trzebaby sprawdzić ile osób z której listy zabraliśmy do tej grupy z miejscami podwójnymi, żeby później zbudować zapytanie na kategorie 1 i 2 z odpowiednim limitem. Czy ma może ktoś lepsze pomysły (nie chodzi mi o kod, gotowca) merytoryczne, sposobu rozwiązania problemu, dobrze przemyślane? Byłbym bardzo wdzięczny za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wstyd ujma i hańba ;>
Dzięki wielkie! Chciałem zapisywać kogo już mam w tej liscie 3 wybranych, bo jeśli wystąpi taki przypadek: lista 1 lista 2 1. zzz 1. mmm 2. xxx 2. aaa 3. yyy 3. yyy 4. mmm 4. bbb 5. aaa 5. ccc 6. bbb 6. zzz I po wybraniu tych trzech najlepszych z tych dwóch list, wyjdzie, że kwalifikują się tylko mmm, aaa, yyy. To nie mogę po prostu sobie wybrać 5 najlepszych, ani np 5 najlepszych od 2giej pozycji. Bo jak w przykładzie mogą to być osoby z różnych pozycji listy. Na jednej może być najniżej, a na drugiej bardzo wysoko, co w rezultacie da mu miejsce u wybrańców. Ale wystarczy, że zapisze ich id, i potem odrzucę je, generując listy 1 i 2. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 20:17 |