Tak więc chodzi o rozwiązanie z pkt. 1 -> post #4. Dla wspomnianego przez Ciebie przypadku:
`wartosc_1`     `wartosc_2`     `wartosc_3`
   3684            628             253
   5809            246             738
   2649            226             97
   1180            973             495
Podanie wartości kolumn:
`wartosc_1` = 5809
`wartosc_2` = 246
zwróci wynik: 3 (3 pozycja od największej).
 
Co ciekawsze, skoro `wartosc_1` jest unikalna i ją znasz, to nie potrzebujesz `wartosc_2` do znalezienia wiersza i jego pozycji, wystarczy unikalna `wartosc_1` 
 
W tym wypadku kwerenda będzie wyglądała następująco (analogicznie jak w poście #4):
SELECT `pozycja`
    FROM (SELECT `wartosc_1`, (@nr_wiersza:=@nr_wiersza+1) AS `pozycja`
        FROM `nazwa_tabeli`, (SELECT @nr_wiersza:=0) `tmp` ORDER BY `wartosc_2` DESC) `tmp`
    WHERE wartosc_1=5809;
Jej uchwyt:
new iPozycjaWierszaWynikowego;
if(SQL_NumResults(hUchwytKwerendy))
{
     iPozycjaWierszaWynikowego = SQL_ReadResult(hUchwytKwerendy, SQL_FieldNameToNum(hUchwytKwerendy, "pozycja"));
}
else
{
     log_amx("Nie znaleziono rekordu spelniajacego podane kryteria");
}
W zmiennej iPozycjaWierszaWynikowego przechowywana jest pozycja wiersza (po przesortowaniu wg kolumny `wartosc_2`, którego podana `wartosc_1` wynosiła 5809).
Czyli w uproszczeniu, iPozycjaWierszaWynikowego = 3.
					
					
					
							Użytkownik _McHappy edytował ten post 10.04.2018 20:49