Hola amigos recurro nuevamente a este tema para publicar la consulta final que he realizado por si algún día otra persona tiene un problema similar, generalmente la consulta final que habia conseguido tenia una irregularidad, pues me listaba los usuarios de forma ascendente por número de chats recibidos para lo cual en verdad necesitaba que me los listara por el número de usuarios que habian enviado mensajes a ese usuario y si estaban conectados o no(de lo contrario no lo contaría) así que llegué a esta consulta final:
Código SQL:
Ver originalSELECT u3.id_usuario, u3.nombres, u3.apellidos, COUNT(DISTINCT q2.id_usuario) AS clients
FROM (SELECT u2.id_usuario, u2.nombres, u2.apellidos, u2.id_rol, u2.conectado, q1.mensaje, q1.id_usuario_destino
FROM (SELECT c.id_usuario_origen, u.id_rol, u.nombres, u.apellidos, u.conectado, c.id_usuario_destino,
c.mensaje FROM usuarios u INNER JOIN chat c ON u.id_usuario = c.id_usuario_origen
WHERE (u.id_rol = -1 OR u.id_rol = 2 ) AND u.conectado = 1 OR u.id_usuario = 1) q1
INNER JOIN usuarios u2 ON u2.id_usuario = q1.id_usuario_origen) AS q2 INNER JOIN usuarios u3 ON u3.id_usuario = q2.id_usuario_destino WHERE u3.conectado = 1
GROUP BY u3.id_usuario ORDER BY clients ASC LIMIT 1