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

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
