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

Problema con consutla

Estas en el tema de Problema con consutla en el foro de Mysql en Foros del Web. Hola, estoy teniendo problemas con esta consulta y es que no veo el motivo aparente ya que creo que está todo bien. Se tiene una ...
  #1 (permalink)  
Antiguo 03/10/2012, 03:36
 
Fecha de Ingreso: junio-2004
Mensajes: 57
Antigüedad: 20 años, 5 meses
Puntos: 0
Problema con consutla

Hola, estoy teniendo problemas con esta consulta y es que no veo el motivo aparente ya que creo que está todo bien. Se tiene una vista que contiene datos de usuario (id, fechaAlta ...) y una tabla que contiene los idiomas de cada usuario.

Por un lado he realizado una consulta que funciona correctamente (probado) que devuelve la cantidad de idiomas que habla un usuario (en este caso concreto, los usuarios que hablan 3 idiomas por ejemplo):
(SELECT usuario_id FROM spoken_languages GROUP BY usuario_id HAVING (COUNT(usuario_id) < 4)

Lo que necesito es contar y agrupar por mes y año los usuarios registrados en un período de tiempo y que cumplan esa subconsulta. Para ello la consulta final la he dejado de la siguiente forma pero no funciona.

SELECT COUNT( * ) AS count FROM VISTA_STATISTICS_USER
WHERE id IN (SELECT usuario_id FROM spoken_languages GROUP BY usuario_id HAVING (COUNT(usuario_id) < 4)
GROUP BY MONTH( fechaAlta ) , YEAR( fechaAlta )
ORDER BY MONTH( fechaAlta ) , YEAR( fechaAlta )
LIMIT 0, 12

Si alguien puede indicarme donde está el fallo se lo agradecería.

Saludos
  #2 (permalink)  
Antiguo 03/10/2012, 04:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con consutla

Es un error de definición en el SELECT.
El discriminante del GROUP BY debe estar en el SELECT, o sino el SUM() devolverá un sólo dato.
Código MySQL:
Ver original
  1. SELECT MONTH(fechaAlta) Mes, YEAR(fechaAlta) Anio, COUNT( * ) Total
  2. FROM VISTA_STATISTICS_USER
  3. WHERE id IN (SELECT usuario_id FROM spoken_languages
  4.     GROUP BY usuario_id
  5.     HAVING (COUNT(usuario_id) < 4)
  6. GROUP BY MONTH(fechaAlta), YEAR( fechaAlta)
  7. ORDER BY MONTH(fechaAlta), YEAR( fechaAlta)
  8. LIMIT 0, 12
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/10/2012, 08:22
 
Fecha de Ingreso: junio-2004
Mensajes: 57
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Problema con consutla

Muchas gracias por la ayuda, faltaba también un paréntesis de la subconsulta y ya funciona a la perfección.

Saludos

Etiquetas: select, tabla
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 13:42.