Cita:
Iniciado por layker tengo una tabla para ver los usuarios online, formada por |usuario|tiempo| si el usuario esta en la tabla kiere dcir k esta conectado y si no, no lo sta.
coomo puedo ordenadar la lista de amigos que me muestra con esa consulta en relacion a si estan conectados.
es decir ke me muestre primero los ke estan online y luego los demas.
muxas gracias
Usando left join y jugando con el NULL generado en aquellos que no están en conexion (así he llamado a la tabla). Además te he puesto el campo de activo. Observa que ordena en primer lugar por el criterio de estado (activo/inactivo), y activo está antes que inactivo en el orden alfabético, y luego he ordenado por otro campo que quieras que sirva de orden, en este caso el user que le corresponda.
Código:
SELECT CASE WHEN user1 =1
THEN user2
ELSE user1
END AS amigo, IF( c.usuario IS NULL , 'activo', 'inactivo' ) AS estado
FROM amigos a
LEFT JOIN conexion c ON ( a.user1 = c.usuario
OR a.user2 = c.usuario )
WHERE a.user1 =1
OR a.user2 =1
ORDER BY IF( c.usuario IS NULL , 'activo', 'inactivo' ) , CASE WHEN user1 =1
THEN user2
ELSE user1
END