Tengo dos tablas: player y player_friend . El player mesa tiene tres campos: 'id', 'nivel' y 'nombre de usuario'. La tabla player_friend tiene dos campos: 'player_id' y 'friend_id'. Puedo obtener todos los lugares en el ranking consultando al player , ordenando por 'nivel' y el índice de la fila en el resultado es la ubicación en el ranking:
SELECT (username, level) FROM player SORT BY level; ¿Cómo consulto la ubicación en el ranking, el nombre de usuario y el nivel de las entradas en el player_friend 'friend_id' donde 'player_id' = x?
Por ejemplo:
id | username | level 1 | a | 1 2 | b | 3 3 | c | 2 4 | d | 5 player_id | friend_id 4 | 1 4 | 2Resultados previstos:
placing | username | level 2 | b | 3 4 | a | 1 Explicación: el amigo con nombre de usuario "b" es el segundo en el ranking global y el amigo con nombre de usuario "a" es el ranking global (ordenado por nivel), en el ejemplo no es visible pero solo muestra dónde player_friend 'player_id' 4.
¡Gracias por adelantado!
Creo que quieres row_number() :
select p.* from player_friend pf join (select p.*, row_number() over (order by level) as placing from player p ) p on pf.friend_id = p.id;