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

[Duda] Sintaxis MySQL

Buen día, actualmente tengo una duda respecto a un ejercicio propuesto en el curso de Consultas SQL: Avanzando en SQL con MySQL.

El problema en cuestion es:

En la tabla de facturas tenemos el valor del impuesto. En la tabla de ítems tenemos la cantidad y la facturación. Calcula el valor del impuesto pago en el año de 2016 redondeando al menor entero.

Mi respuesta es la siguiente:

SELECT YEAR(B.FECHA_VENTA) AS FECHA, FLOOR(SUM((A.CANTIDAD*A.PRECIO)*B.IMPUESTO)) AS TOTAL_IMPUESTO FROM items_facturas A INNER JOIN facturas B ON A.NUMERO=B.NUMEROWHERE YEAR(B.FECHA_VENTA) = "2016" GROUP BY YEAR(B.FECHA_VENTA);

Y la respuesta al problema en cuestión es:

SELECT YEAR(FECHA_VENTA), FLOOR(SUM(IMPUESTO * (CANTIDAD * PRECIO))) AS RESULTADO FROM facturas F INNER JOIN items_facturas IFa ON F.NUMERO = IFa.NUMERO WHERE YEAR(FECHA_VENTA) = 2016 GROUP BY YEAR(FECHA_VENTA);

Es similar, sin embargo veo que en la respuesta que brinda el profesor no aplica un alias para las tablas que hacen el INNER JOIN, entonces mi duda surge en si hay algo que estoy saltando por completo o si simplemente en ese caso el alias es opcional. Tengo entendido que es necesario hacerlo para especificar que columna y de que tabla queremos usar entonces pues me entra esa duda.

Agradeceria a cualquiera que me pudiera dar un poco de información al respecto, mil gracias.

1 respuesta

Cuando se hace un Inner Join todas las columnas se ponen una al costado de la otra, cuando hay columnas repetidas es necesario diferenciarlas con un Alias como por ejemplo el campo NUMERO, es necesario decir A.NUMERO y B.NUMERO, pero en el caso de los campos como CANTIDAD, PRECIO e IMPUESTO ya que son columnas únicas en ese JOIN es evidente para la consulta que te refieres a esas columnas. Por eso muchas veces veras que cuando se crean tablas no se pone el campo ID sino USER_ID o PRODUCT_ID asi no necesitas estar usando un alias ya que es evidente a que campo te refieres en el JOIN.