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

consulta Mixing of GROUP

Estas en el tema de consulta Mixing of GROUP en el foro de Mysql en Foros del Web. en mi maquina me funciona perfecto esta consulta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT f. * , c.nombre , c.direccion , c.ciudad , c.rfc ...
  #1 (permalink)  
Antiguo 17/02/2012, 18:15
Avatar de Fabu_dina  
Fecha de Ingreso: enero-2004
Mensajes: 425
Antigüedad: 20 años, 3 meses
Puntos: 1
consulta Mixing of GROUP

en mi maquina me funciona perfecto esta consulta


Código MySQL:
Ver original
  1. SELECT f.*,c.nombre,c.direccion,c.ciudad,c.rfc,c.*,e.estado_nombre, sum(d.importe*d.cantidad) as importe FROM factura f left join clientes c on c.ide=f.cliente INNER JOIN detalle_factura d on f.ide=d.factura left join estados e on e.estado_id=c.estado where f.ide=1

y en el servidor me sale este error que podria ser

#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
  #2 (permalink)  
Antiguo 17/02/2012, 18:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta Mixing of GROUP

A pesar de lo que digas, esa consulta, tal y como la estás poniendo en el post no te puede estar funcionando en tu PC. No puede porque tiene un error de sintaxis grave: Estás usando una función agregada, sin usar el GROUP BY. Eso es lo que te dice MySQL.
Mira:
Código MySQL:
Ver original
  1.     f.*,
  2.     c.nombre,
  3.     c.direccion,
  4.     c.ciudad,
  5.     c.rfc,
  6.     c.*,
  7.     e.estado_nombre,
  8.     SUM(d.importe*d.cantidad) importe
  9.     factura f
  10.     LEFT JOIN clientes c ON c.ide=f.cliente
  11.     INNER JOIN detalle_factura d ON f.ide=d.factura
  12.     LEFT JOIN estados e ON e.estado_id=c.estado
  13. WHERE f.ide=1
El problema está en el uso de SUM (función agregada) cuando aparece junto a otros campos no afectados por funciones agregadas. En ese caso todos los DBMS, sin importar cuál sea, exigen que se use GROUP BY para establecer a quién pertenecen los subtotales.
¿Se entiende?
__________________
¿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 18/02/2012, 02:57
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: consulta Mixing of GROUP

Hola gnzsoloyo,

Lo que comentas del GROUP BY, en MySQL, es totalmente cierto si activas ONLY_FULL_GROUP_BY en 5.1.6. Server SQL Modes.

11.16.3. GROUP BY and HAVING with Hidden Columns
  #4 (permalink)  
Antiguo 18/02/2012, 09:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta Mixing of GROUP

William: Sé que conoces mucho más que yo de MySQL, y ese valor lo conocía, aunque no he visto a nadie usarlo.
Normalmente, cuando instalas por default el servidor, la opción no viene preseteada así.
¿Realmente alguien usa el servidor con esa configuración?
¿Exactamente para qué casos se usa en esa forma?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 18/02/2012, 12:14
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: consulta Mixing of GROUP

Hola gnzsoloyo,

Personalmente activo ONLY_FULL_GROUP_BY, entre muchas otras, en servidores de desarrollo/preproducción para garantizar que todos los equipos de desarrollado escriban sentencias SQL estándares facilitando la portabilidad.

Como todo, esto no aplica en todos los casos, si hay un caso donde ciertas extensiones (no estándar) de MySQL son útiles y a priori sabemos no traerá problemas se usan, pero hay que conocer muy bien cada extensión usada.
  #6 (permalink)  
Antiguo 18/02/2012, 12:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: consulta Mixing of GROUP

wchiquito,
lo mismo digo una tontería, pero... tal y como tienes la consulta sin group by

Lo que creo que controlas con eso es no permitir agrupar por un campo que no aparezca en el select.

Y por otra parte, el problema podría ser que aunque funcionara por defecto un agrupado automático no sabría qué campo o campos agrupar, pues en tu selección hay varios, y podría ser uno, otro o varios a la vez.

Última edición por jurena; 18/02/2012 a las 12:49
  #7 (permalink)  
Antiguo 18/02/2012, 14:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta Mixing of GROUP

Me parece que yo he tenido un error de interpretación, que se está extendiendo.
Lo que a primera instancia creí que te referías a poder suprimir el GROUP BY cuando hay columnas no agregadas, ya que sobre eso era lo que yo hablaba.
El ONLY_FULL_GROUP_BY que mencionas, se usa específicamente para no permitir que las columnas no afectadas por las funciones agregadas no estén en el GROUP BY, y es usual poner el requerimiento para hacer que las consultas agrupadas se ajusten a un estandar portable (en el caso de MySQL, hay un debate sobre si MySQL está o no más cerca del estandar ANSI precisamente porque lo permite). Eso lo entiendo porque estoy actualmente todo el día trabajando con Oracle, donde eso es estándar básico.

Pero en este caso el problema no se da por poner un GROUP BY con columnas ocultas o parciales, sino porque el forista directamente no puso el GROUP BY, y eso es lo que MySQL le está diciendo.

Personalmente, considero que el uso de columnas ocultas, o agrupamientos parciales en MySQL son potentes (cuando se los entiende y domina), ya que facilitan ciertas sintaxis, al evitar tener que hacer anidamientos mayores de consultas. Es una pena que los demás DBMS no los admitan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 18/02/2012, 15:24
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: consulta Mixing of GROUP

Hola gnzsoloyo/jurena,

Es correcto, creo que hubo una mala interpretación de mi parte.

El problema en la consulta de Fabu_dina es que efectivamente falta el GROUP_BY al tener columnas no afectadas por funciones de agregación.

Etiquetas: group, join, mixing, select
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.
Tema Cerrado




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