Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Select contador de registros repetidos

Estas en el tema de Select contador de registros repetidos en el foro de Mysql en Foros del Web. Hola tengo un grave problema que no he podido solucionar... Sucede que estoy haciendo un chat en java usando servlets, javascript y peticiones ajax.... el ...
  #1 (permalink)  
Antiguo 09/04/2015, 16:32
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Mensaje Select contador de registros repetidos

Hola tengo un grave problema que no he podido solucionar...

Sucede que estoy haciendo un chat en java usando servlets, javascript y peticiones ajax....

el problema está en que me estoy volviendo loco con una consulta...

En una tabla mysql estoy almacenando todos los chats enviados...

el modelo es más o menos este:

- id_chat
- mensaje
- id_usuario_origen
- id_usuario_destino entre otros campos fecha,etc...

El sitio originalmente al cargar tiene que reconocer un usuario soporte que generalmente no tenga tantos chats abiertos y estar disponible para el usuario visitante que desee chatear...

así que la consulta que estoy haciendo es está:

select * from usuarios u inner join chat c on u.id_usuario = c.id_usuario_destino where u.id_rol = 1 group by c.id_usuario_origen


selecciono todos los usuarios cuyo rol es 1 ="Soporte" y agregado a esto selecciono todos los usuarios que se están dirigiendo en ese momento a un usuario de tipo "soporte"....

esto me da como resultado lo que más o menos quiero, una lista de todos los usuarios visitantes que cada uno de los "soporte" están atendiendo, lo último que necesito es contar presisamente esos registros de visitantes que he obtenido mediante esta consulta que no sé si estará bien...

Pues finalmente el conteo lo quiero hacer para hacer una ordenación ascendente por el número que nos de el count que no se donde poner, para así lograr como objetivo un solo usuario con el número de atendidos menor de todos....

PLEASE es urgente cualquier ayuda me serviría mucho....
  #2 (permalink)  
Antiguo 09/04/2015, 16:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Select contador de registros repetidos

Cita:
Iniciado por jhonjaider1000 Ver Mensaje
PLEASE es urgente cualquier ayuda me serviría mucho....
Es lo que mas me gusta del mensaje el Please en mayuscula para darle enfasis a que necesita ayuda.........



Código SQL:
Ver original
  1. SELECT total, id_usuario FROM(
  2. SELECT COUNT(*) AS total, c.id_usuario_origen FROM usuarios u INNER JOIN chat c ON u.id_usuario = c.id_usuario_destino WHERE u.id_rol = 1 GROUP BY c.id_usuario_origen
  3. ) AS tabla ORDER BY total DESC

si te entendi bien seria con algo como eso, OJO, la sentencia esta en SQL server puede ser que tengas que cambiar algo para ajustarla a Mysql
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/04/2015, 16:50
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años
Puntos: 74
Respuesta: Select contador de registros repetidos

tienes que hacer algo así:
Código SQL:
Ver original
  1. SELECT nombre, COUNT(*) AS conteo
  2. FROM usuarios
  3. GROUP BY nombre
  4. ORDER BY conteo
  #4 (permalink)  
Antiguo 09/04/2015, 17:00
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Respuesta: Select contador de registros repetidos

Hola hahaha see estaba preocuapado!! muchas gracias a todos por responder doy este tema como solucionado! no había pensado en meter un select dentro de otro haha enserio muchas gracias!! :D

Consulta final:
Código SQL:
Ver original
  1. SELECT *, COUNT(*) AS num_chats
  2. FROM (SELECT u.id_usuario, u.nombres, u.apellidos, u.id_rol, u.conectado
  3. FROM usuarios u INNER JOIN chat c ON u.id_usuario = c.id_usuario_destino
  4. WHERE u.id_rol = 1 AND u.conectado
  5. GROUP BY c.id_usuario_origen) AS x
  6. GROUP BY id_usuario
  7. ORDER BY num_chats ASC LIMIT 1

Última edición por gnzsoloyo; 09/04/2015 a las 17:22 Razón: Legibilidad de codigo. Se recomienda NO PONER EN UNA SOLA LINEA.
  #5 (permalink)  
Antiguo 13/04/2015, 00:19
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Respuesta: Select contador de registros repetidos

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 original
  1. SELECT  u3.id_usuario, u3.nombres, u3.apellidos, COUNT(DISTINCT q2.id_usuario) AS clients
  2. FROM (SELECT u2.id_usuario, u2.nombres, u2.apellidos, u2.id_rol, u2.conectado, q1.mensaje, q1.id_usuario_destino
  3.  FROM (SELECT  c.id_usuario_origen, u.id_rol, u.nombres, u.apellidos, u.conectado, c.id_usuario_destino,
  4. c.mensaje FROM usuarios u INNER JOIN chat c ON u.id_usuario = c.id_usuario_origen
  5. WHERE (u.id_rol = -1 OR u.id_rol = 2 ) AND u.conectado = 1 OR u.id_usuario = 1) q1
  6.  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
  7.  GROUP BY u3.id_usuario ORDER BY clients ASC LIMIT 1

Última edición por gnzsoloyo; 13/04/2015 a las 04:03

Etiquetas: select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:52.