En los siguientes Ejemplos de consultas en SQL vamos a revisar el concepto de la cláusula JOIN.
La cláusula JOIN me permite crear uniones entre una o más tablas, vistas o subconsultas, a través de un campo que las relacionen entre sí, este campo es una Clave Primaria en una de las tablas y ese mismo campo es una Clave Foránea en la otra. Su uso lo veremos a través de los siguientes ejemplos de consultas en SQL.
↡ Ejemplos SQL – Uso de JOIN al final ↡
Tipos de JOIN
Existen varios tipos de JOIN en SQL y según el tipo de JOIN que ejecutemos tendremos diferentes conjuntos de resultados.
INNER JOIN
Establece la unión entre 2 tablas o conjunto de resultados, donde los valores sean exactos en ambas tablas.
LEFT JOIN
Establece la unión entre la Tabla A y la Tabla B, me mostrará todos los registros de la tabla A y los que coincidan en la Tabla B, si hay registros que existan en A y no en B estos se mostraran con valor NULL.
RIGHT JOIN
Establece la unión entre la Tabla A y la Tabla B, me mostrará todos los registros de la tabla B y los que coincidan en la Tabla A, si hay registros que existan en B y no en A estos mostraran NULL.
Ejemplos de consultas en SQL
Planteando el siguiente ejercicio vamos a ver el uso de INNER JOIN en SQL.
Ejercicio
Punto a) Una empresa de venta de equipos informáticos necesita conocer a través de un informe, el total de las ventas diarias por cliente que está generando, ordenadas por fecha. Del cliente debemos mostrar (nombres, DNI, correo).
Punto b) En otro reporte la empresa necesita saber el detalle de cada una de las ventas (cuantos y que productos fueron registrados en cada venta)
Tener en cuenta:
De los CLIENTES debemos registrar:
- Nombres y Apellidos
- Documento de identidad
- Correo
De los PRODUCTOS tenemos que registrar:
- Código
- Nombre
- Descripción
- Valor de descuento
De las VENTAS debemos registrar:
- Al cliente que se le ha hecho la venta
- Fecha de la venta
- Cuantas unidades y cuales productos hemos vendido
Paso 1 : Análisis
Al leer el ejercicio y lo que nos están pidiendo nos damos cuenta que podemos identificar 4 tablas:
- CLIENTES
- PRODUCTOS
- VENTAS
- VENTAS_DETALLE
¿Cómo podemos identificar las 4 tablas?
En primer lugar, porque en el ejercicio nos están pidiendo «registrar la ventas», así que para poder guardar las ventas necesitamos crear nuestra primera tabla (VENTAS).
Adicional a eso nos piden registrar el detalle de cada una de las ventas, muy bien, para registrar el detalle de la ventas debemos crear nuestra segunda tabla (VENTAS_DETALLE), además tenemos que identificar que debemos crear nuestra primera relación entre la tabla VENTAS y VENTAS_DETALLE a través del uso de clave primaria y foránea.
En segundo lugar nos piden «cuantos y que productos fueron registrados en cada venta», si bien es cierto que podríamos registrar los productos con sus características en la tabla (VENTAS_DETALLE) no sería lo más óptimo, lo ideal es separar cada objeto y relacionarlo a través de un campo. Así que tenemos que crear nuestra tercera tabla (PRODUCTOS).
Y por último nos piden saber «a que cliente le vendimos en cada venta» , así que creamos nuestra última tabla (CLIENTES).
Otra manera de saber que tablas debemos crear, es identificando que muchas veces en los problemas nos mencionan las características o «campos» de cada una de las entidades.
Paso 2 : Resolver mediante Consultas en SQL
- Total de las ventas diarias por cliente que está generando.
- Ordenadas por fecha.
- Mostrar (nombres, DNI, correo) del cliente.
Consulta SQL:
SELECT VEN.FECHA AS FECHA, CLI.NOMBRE AS NOMBRE_CLIENTE, CLI.APELLIDO AS APELLIDO_CLIENTE, CLI.DNI AS DNI_CLIENTE, CLI.CORREO AS CORREO_CLIENTE, SUM(VEN.TOTAL) AS TOTAL_VENTAS FROM VENTAS VEN INNER JOIN CLIENTES CLI
ON (VEN.ClienteID = CLI.ClienteID)
GROUP BY VEN.Fecha, CLI.NOMBRE, CLI.APELLIDO, CLI.DNI, CLI.CORREO
ORDER BY VEN.Fecha
Análisis:
- Revisando la consulta que hemos escrito nos damos cuenta que usamos la función de agrupación SUM() para obtener el total de las ventas, cuando usamos funciones de agrupación debemos usar en conjunto con la cláusula GROUP BY debido a que estamos agrupando un conjunto de resultados, y además los campos que van listados junto al GROUP BY son todos los campos que están fuera de la función SUM().
- Para relacionar las VENTAS realizadas con cada CLIENTE hacemos uso del INNER JOIN, por medio del campo ID de la tabla CLIENTES y el campo ClienteID de la tabla VENTAS.
- Detalle de cada una de las ventas (cuantos y que productos fueron registrados en cada venta)
Consulta SQL:
SELECT
VEN.FACTURAID AS FACTURA,
PR.CODIGO AS CODIGO_PRODUCTO,
PR.NOMBRE AS NOMBRE_PRODUCTO,
DT.CANTIDAD AS CANTIDAD_PRODUCTO
FROM VENTAS VEN INNER JOIN VENTAS_DETALLE DT
ON (VEN.VentaID=DT.VentaID)
INNER JOIN PRODUCTOS PR
ON (DT.ProductoID=PR.ProductoID)
Análisis:
- Para realizar esta consulta usamos 2 INNER JOIN, el primero para relacionar la tabla VENTAS con la tabla VENTAS_DETALLE al crear esta relación nos aseguramos que por cada factura de la tabla VENTAS exista la misma factura en la tabla VENTAS_DETALLE.
- El segundo INNER JOIN lo usamos para relacionar la tabla PRODUCTOS con la tabla VENTAS_DETALLE con esto nos aseguramos que los productos que existan en la tabla VENTAS_DETALLE tienen que existir en mi tabla principal PRODUCTOS, debido a que en esta tabla guardo la toda la información de cada producto.
Si tienes alguna pregunta o sugerencia sobre el post Ejemplos de consultas en SQL la puedes dejar en los comentarios.
También te puede interesar »
- Como convertir campos tipo fecha a varchar en SQL ServerEn SQL SERVER la función convert() nos permite formatear o convertir un campo tipo fecha el cual puede ser date o datetime, a un formato…
- Como hacer Update con Inner JoinCon la sentencia update podemos actualizar registros almacenados en una tabla de mi Base de datos pero en muchas ocasiones necesitamos actualizar cierto conjunto de…
- Como Descargar SQL SERVER 2019 Developer EditionSQL Server 2019 Developer Edition es una de las ediciones gratuitas que posee todas las características de SQL SERVER. Se puede usar como base de…
- Ejemplos de consultas en SQL con INNER JOINEn los siguientes Ejemplos de consultas en SQL vamos a revisar el concepto de la cláusula JOIN. La cláusula JOIN me permite crear uniones entre…
- Los 8 mejores libros para aprender SQLSQL «Lenguaje de Consulta Estructurado» Es un lenguaje muy utilizado al momento de trabajar con datos y realizar consultas a bases de datos relacionales ….
Comentarios