Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] DUDA SOBRE ACTIVIDAD 7 DE LA CLASE 6

Buenas noches, que tal. Con respecto a la solución de la actividad 7 de la clase 6, cuando ejecuto los comandos correspondientes a la resolución que encontré, me aparece el mensaje: Error Code: 1054. Unknown column 'CANTIDAD_VENDIDA_TOTAL' in 'field list' :

SELECT A.NOMBRE AS NOMBRE, A.MES_AÑO AS AÑO, A.CANTIDAD_VENDIDA AS CANTIDAD, SUM(A.CANTIDAD_VENDIDA) AS CANTIDAD_VENDIDA_TOTAL, 
(A.CANTIDAD_VENDIDA/CANTIDAD_VENDIDA_TOTAL)*100 AS PORCENTAJE FROM(
SELECT F.DNI, TC.NOMBRE, DATE_FORMAT(F.FECHA_VENTA, "%m - %Y") AS MES_AÑO, 
SUM(IFa.CANTIDAD) AS CANTIDAD_VENDIDA 
FROM facturas F 
INNER JOIN 
items_facturas IFa
ON F.NUMERO = IFa.NUMERO
INNER JOIN 
tabla_de_clientes TC
ON TC.DNI = F.DNI
GROUP BY
F.DNI, TC.NOMBRE, DATE_FORMAT(F.FECHA_VENTA, "%m - %Y"))A
GROUP BY NOMBRE, AÑO
ORDER BY CANTIDAD DESC;

No comprendo cual es la naturaleza del error ya que CANTIDAD_VENDIDA_TOTAL es un alias de un campo totalmente nuevo y que no se encuentra en la tabla original que esta formada en la seleccion llamada despues del FROM.

Cualquier orientacion u observacion sera bienvenida. Gracias!.

1 respuesta

¡Hola Estudiante!

Gracias por tu pregunta. Parece que estás teniendo un problema con el alias CANTIDAD_VENDIDA_TOTAL en tu consulta SQL. El error que estás recibiendo indica que no se reconoce el alias en la lista de campos.

En este caso, el problema es que no puedes usar el alias CANTIDAD_VENDIDA_TOTAL en la misma consulta en la que lo defines. Los alias solo se pueden usar en la cláusula SELECT y en la cláusula ORDER BY. No puedes usar el alias en la misma cláusula SELECT en la que lo defines.

Una solución para esto sería envolver tu consulta original en otra consulta y usar el alias CANTIDAD_VENDIDA_TOTAL en la consulta externa. Aquí tienes un ejemplo de cómo podrías hacerlo:

SELECT NOMBRE, AÑO, CANTIDAD, CANTIDAD_VENDIDA_TOTAL, (CANTIDAD_VENDIDA/CANTIDAD_VENDIDA_TOTAL)*100 AS PORCENTAJE
FROM (
  SELECT A.NOMBRE AS NOMBRE, A.MES_AÑO AS AÑO, A.CANTIDAD_VENDIDA AS CANTIDAD, SUM(A.CANTIDAD_VENDIDA) AS CANTIDAD_VENDIDA_TOTAL
  FROM (
    SELECT F.DNI, TC.NOMBRE, DATE_FORMAT(F.FECHA_VENTA, "%m - %Y") AS MES_AÑO, SUM(IFa.CANTIDAD) AS CANTIDAD_VENDIDA
    FROM facturas F
    INNER JOIN items_facturas IFa ON F.NUMERO = IFa.NUMERO
    INNER JOIN tabla_de_clientes TC ON TC.DNI = F.DNI
    GROUP BY F.DNI, TC.NOMBRE, DATE_FORMAT(F.FECHA_VENTA, "%m - %Y")
  ) A
  GROUP BY NOMBRE, AÑO
) B
ORDER BY CANTIDAD DESC;

En esta consulta, hemos envuelto tu consulta original en otra consulta y hemos utilizado el alias CANTIDAD_VENDIDA_TOTAL en la consulta externa.

Espero que esto resuelva tu problema. Si tienes alguna otra pregunta, no dudes en preguntar. ¡Buena suerte con tus estudios!

Espero haber ayudado y ¡buenos estudios!

Un saludo.

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