En este post te mostraré cómo solucionar el error al hacer una consulta en MySQL. Este error viene cuando hacemos un GROUP BY y al menos a mí se me ha presentado de dos formas.
La primera es:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘una_columna_de_la_tabla’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
La segunda es:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘una_columna_de_la_tabla’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Veamos cómo solucionar este error 42000 de MySQL.
Comencemos viendo un ejemplo de una consulta que genera este error:
No te confundas con la consulta. Solo fíjate en que estamos haciendo un GROUP BY, agrupando por profesionales.id
.
Pues bien, justamente eso genera el segundo error que cito.
La solución es poner en el GROUP BY todas las columnas que están en el SELECT. Así que la consulta de arriba cambia a:
Lo único que hice fue mover las columnas que estaban en el SELECT (turnos.numero, profesionales.nombre) al GROUP BY.
Si lo quieres ver con colores, mira el commit que hice
Si haces un GROUP BY pero usas ORDER BY, debes usar las columnas de ORDER BY en GROUP BY. Es decir, la siguiente consulta causa el primer error citado:
Ya que estoy usando la columna hora en el ORDER BY pero esa columna no está en el GROUP BY. La solución es:
Simplemente tuve que agregar la columna hora al final del GROUP BY.
En resumen este tipo de errores se solucionan agregando todas las columnas usadas dentro del GROUP BY.
Otra posible solución sería cambiando la variable sql_mode
pero esto que explico lo hago suponiendo que no queremos hacerlo o que no tenemos acceso al servidor de MySQL para modificarla.
La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…
Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…
El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…
El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…
En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…
Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…
Esta web usa cookies.
Ver comentarios
Gracias, me sirvio de base para solucionar mi problema :D
Excelente, funciono perfectamente. En mi caso fue el primer paso de esta publicación. Gracias por tu aporte.
no es asi hombre, si sabes la funcion del groupBy?, si esque se pone en el groubBy todo lo que esta en el select entonces ya no tendria caso usa el grouBy.