Para realizar esta práctica crearemos y utilizaremos una base de datos llamada JOISN
Igualmente realizaremos la creación de 2 tablas llamadas “clientes” y “pedidos”
Y por último realizamos registros en ambas tablas según corresponda. 23 registros en
“clientes” y 16 registros de “pedidos”
Ahora si podemos iniciar con los ejemplos.
USO DE LOS DIFERENTES TIPOS DE JOINS
LEFT JOIN
Mostrar los clientes que no han realizado pedidos:
Este LEFT JOIN muestra todos los clientes con pedidos en agosto de 2020. Que es un total
de 8 “pedidos” registrados.
RIGHT JOIN
Este RIGHT JOIN muestra todos los pedidos realizados en Julio de 2020, junto con el
cliente asociado.
Esto te da como resultado los pedidos del cliente con “idcliente” = 1005 junto con sus
detalles de cliente.
INNER JOIN
Esto da como resultado los clientes que han comprado “4 plumones Acuario”
específicamente, mostrándonos los datos del cliente (idcliente,nombre,apellidos,teléfono) y
los datos del pedido (idpedido,descripcion,fecha)
Esta consulta une la tabla clientes con la tabla pedidos en función de la columna idcliente,
que es una clave externa en la tabla pedidos que hace referencia a la columna idcliente en la
tabla clientes. La consulta devuelve las columnas nombre y telefono de la tabla clientes para
todos los clientes que han realizado un pedido (es decir, que tienen un registro
correspondiente en la tabla pedidos).
FULL OUTHER JOINS
MySQL no soporta nativamente el FULL OUTER JOIN, pero se puede simular utilizando
una combinación de LEFT JOIN y RIGHT JOIN
En esta consulta su juntan un RIGHT JOIN con un LEFT JOIN dando como resultado los
clientes existentes asociados a los pedidos realizados, junto con la fecha y la descripcion
del pedido. Además se usa UNION para combinar ambos JOIN y para eliminar registros
duplicados es decir el resultado de ambas tablas se combinan formando una sola tabla. La
cláusula WHERE se utiliza para filtrar los registros de la segunda consulta y solo incluir
aquellos clientes que no tienen pedidos asociados.
APLICACIOND E CONSULTAS ANIDADAS
Objetivo: Demostrar el uso de consultas anidadas en MySQL con la base de datos JOINS
proporcionada.
Consideraciones:
Las tablas utilizadas son clientes y pedidos.
La relación entre las tablas es uno a varios (un cliente puede tener varios pedidos).
Se utilizarán consultas anidadas para obtener información combinada de ambas tablas.
EJEMPLOS:
Obtener los pedidos realizados por clientes cuyo nombre sea "Juan":
2. Obtener los clientes que hayan realizado pedidos en la fecha '2020-08-02':
1. Obtener los nombres de los clientes que han realizado pedidos después del
1 de julio de 2020:
CONSULTAS ANIDADAS CON JOIN Y FUNCIONES
2. Obtener el número de pedidos realizados por cada cliente:
3. Obtener los clientes que hayan realizado pedidos 4 o más artículos:
Los 3 meses con la mayor cantidad de pedidos:
CREATE TABLE clientes(
idcliente INTEGER PRIMARY KEY,
nombre VARCHAR(45),
primerapellido VARCHAR(45),
segundoapellido VARCHAR(45),
telefono VARCHAR(12)
);
INSERT INTO clientes(idcliente,nombre,primerapellido,segundoapellido,telefono)
VALUES(1000,'Juan','Vazquez','Perez','1234564343'),
(1001,'Juan','Vazquez','Perez','1234564348'),
(1002,'Carlos Miguel','Lopez','Perez','1234564349'),
(1003,'Maria Carlota','SAnchez','Perez','1234564322'),
(1004,'Casandra','Gavilan','Gonzalez','1234564335'),
(1005,'Andrea','Davila','Antonios','1234564326'),
(1006,'Joao','Aguiar','Garza','1234564327'),
(1007,'Daniel','Zambrano','Espino','1234564328'),
(1008,'Flor','Velazquez','Espinoza','1234564345'),
(1009,'Celeste','Vazquez','De la O','1234564385'),
(1010,'Abigail','Andrade','Beltran','1234564373'),
(1011,'Juan Carlos','Espinoza','Campos','1234564399'),
(1012,'Dionicio','Espino','Espinoza','1234564398'),
(1013,'Jose Carlos','Flores','Garcia','1234564390'),
(1014,'Jose Pedro','Valle','Perez','1234564312'),
(1015,'Miguel Luis','Flores','Sanchez','1234564315'),
(1016,'JoseMarcelo','Gonzalez','Miranda','1234564222'),
(1017,'Flor Estela','Huerta','Espinosa','1234564555'),
(1018,'Cristian Jesus','Kilberth','Esparza','1234564532'),
(1019,'Maria Cecilia','Lopez','Lopez','1234564145'),
(1020,'Juan Alberto','Martinez','Vazquez','1234564142'),
(1021,'Franchesco Daniel','Nunez','Perez','1234564248'),
(1022,'Laura','Quinonez','Garcia','2000-02-08');
CREATE TABLE pedidos (
idpedido INTEGER PRIMARY KEY,
idcliente INT,
descripcion VARCHAR(100),
fecha DATE,
FOREIGN KEY(idcliente)
REFERENCES clientes(idcliente)
);
INSERT INTO pedidos (idpedido,idcliente,descripcion,fecha)
VALUES(10000,1002,'4 colchones sol','2020-08-02'),
(10001,1002,'4 colchones sol','2020-08-02'),
(10002,1002,'2 abanicos de techo Stevi','2020-05-22'),
(10003,1004,'1 vajilla porcelana Stevi','2020-07-12'),
(10004,1002,'1 teclado de computadora Violet','2020-07-30'),
(10005,1003,'4 mouse violet','2020-08-02'),
(10006,1001,'1 monitor violet','2020-08-18'),
(10007,1001,'4 mesas de plástico Carls','2020-07-12'),
(10008,1005,'50 libretas Acuario','2020-07-15'),
(10009,1005,'50 paquetes de pluma Acuario','2020-08-12'),
(10010,1005,'4 plumones Acuario','2020-08-12'),
(10011,1006,'8 plumones Acuario','2020-07-17'),
(10012,1005,'4 plumones Acuario','2020-07-01'),
(10013,1008,'25 plumones Acuario','2020-08-17'),
(10014,1007,'4 plumones Acuario','2021-07-29'),
(10015,1002,'5 paquetes de lapices La Flor','2020-08-05');