Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

[Bug] Error en ejecución..

Este código así tal cual: SELECT ENVASE, SABOR, CASE WHEN PRECIO_DE_LISTA >= 12 THEN 'Costoso' WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'Asequible' ELSE 'Barato' END AS PRECIO, MIN(PRECIO_DE_LISTA) AS PRECIO_MINIMO FROM tabla_de_productos WHERE TAMANO = '700 ml' GROUP BY ENVASE, CASE WHEN PRECIO_DE_LISTA >= 12 THEN 'Costoso' WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'Asequible' ELSE 'Barato' END ORDER BY ENVASE;

no me jala a mi, me aparece el siguiente error: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'jugos_ventas.tabla_de_productos.SABOR' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

¿Se tiene que hacer una modificación a la función GROUP BY o es por mi versión de MYSQL (8.0.32) ??

3 respuestas

¡Hola Francisco!

El error que estás viendo se debe a una restricción de MySQL en la que todas las columnas que no están en una función de agregación deben estar en la cláusula GROUP BY. En tu consulta, la columna "SABOR" no está en la cláusula GROUP BY y no está en una función de agregación, lo que causa el error.

Para solucionar esto, simplemente agrega la columna "SABOR" a la cláusula GROUP BY:

SELECT ENVASE, SABOR, CASE WHEN PRECIO_DE_LISTA >= 12 THEN 'Costoso' WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'Asequible' ELSE 'Barato' END AS PRECIO, MIN(PRECIO_DE_LISTA) AS PRECIO_MINIMO FROM tabla_de_productos WHERE TAMANO = '700 ml' GROUP BY ENVASE, SABOR, CASE WHEN PRECIO_DE_LISTA >= 12 THEN 'Costoso' WHEN PRECIO_DE_LISTA >= 5 AND PRECIO_DE_LISTA < 12 THEN 'Asequible' ELSE 'Barato' END ORDER BY ENVASE;

Esto debería solucionar el error que estás viendo. No debería ser un problema de versión de MySQL, ya que esta restricción ha estado presente en versiones anteriores también.

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)

buenas noches le agregue sabor y si me funciono pero hay otro error tambien y es en esta consulta: SELECT ESTADO, BARRIO, MAX(LIMITE_DE_CREDITO) AS LIMITE, EDAD FROM tabla_de_clientes WHERE EDAD >=20 GROUP BY ESTADO, BARRIO ORDER BY EDAD;

me da como recultado error

TU CONSULTA PRESENTADO ES LO SIGUIENTE

SELECT ESTADO, BARRIO, MAX(LIMITE_DE_CREDITO) AS LIMITE, EDAD FROM tabla_de_clientes WHERE EDAD >=20 GROUP BY ESTADO, BARRIO ORDER BY EDAD;

Presentas el error por que necesitas agregar **EL ATRIBUTO EDAD EN LA CLAUSULA GROUP BY **

ES DECIR GROUP BY ESTADO, BARRIO EDAD

YA QUE LO TIENES DE ESTA FORMA

GROUP BY ESTADO, BARRIO