jueves, 9 de marzo de 2017

Ejemplo de una consulta vinculando tres tablas utilizando la clausula INNER JOIN




Ejemplo #1:
Crear una tabla para registrar los tres restaurantes de la lista, otra tabla con los tres tipos de pizza, otra tabla con las tres área de envío y una cuarta tabla que registre todos los pedidos que se muestran en la lista. 
Posteriormente realizar una consulta SELECT utilizando la clausula INNER-JOIN que muestre la información como se refleja en la lista. 


Restaurante
Tipo de Pizza
Área de envío
Power Pizza
Corteza gruesa
San Bosco
Power Pizza
Corteza gruesa
Las Eugenias
Power Pizza
Corteza fina
San Bosco
Power Pizza
Corteza fina
Las Eugenias
Modena Pizza
Corteza fina
Las velitas
Modena Pizza
Corteza rellena
Las velitas
Pizzeria Josue
Corteza gruesa
San Bosco
Pizzeria Josue
Corteza gruesa
Las Eugenias
Pizzeria Josue
Corteza gruesa
Las velitas
Pizzeria Josue
Corteza rellena
San Bosco
Pizzeria Josue
Corteza rellena
Las Eugenias
Pizzeria Josue
Corteza rellena
Las velitas



Solución:

CREATE DATABASES IF NOT EXISTS pizzerias;

CREATE TABLE IF NOT EXISTS restaurante(
codigo INT(5) NOT NULL PRIMARY KEY,
nombre VARCHAR(40) NOT NULL 
)ENGINE INNODB;

CREATE TABLE IF NOT EXISTS pizza(
codigo INT(5) NOT NULL PRIMARY KEY,
nombre VARCHAR(40) NOT NULL 
)ENGINE INNODB;

CREATE TABLE IF NOT EXISTS area(
codigo INT(5) NOT NULL PRIMARY KEY,
nombre VARCHAR(40) NOT NULL 
)ENGINE INNODB;

CREATE TABLE IF NOT EXISTS pedidos(
cod_rest INT(5) NOT NULL,
cod_pizza INT(5) NOT NULL,
cod_area INT(5) NOT NULL,
FOREIGN KEY (cod_rest) REFERENCES restaurante(codigo)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (cod_pizza) REFERENCES pizza(codigo)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (cod_area) REFERENCES area(codigo)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE INNODB;


INSERT INTO restaurante(codigo,nombre) VALUES(1,"Power Pizza"),(2,"Modena Pizza"),(3,"Pizzeria Josue");
INSERT INTO pizza(codigo,nombre) VALUES(1,"Corteza gruesa"),(2,"Corteza fina"),(3,"Corteza rellena");
INSERT INTO area(codigo,nombre) VALUES(1,"San Bosco"),(2,"Las Eugenias"),(3,"Las Velitas");
INSERT INTO pedidos(cod_rest,cod_pizza,cod_area) 
VALUES(1,1,1),(1,1,2),(1,2,1),(1,2,2),(2,2,3),(2,3,3),(3,1,1),(3,1,2),(3,2,3),(3,3,1),(3,3,2),(3,3,3);


SELECT r.nombre AS "Restaurante",z.nombre AS "Tipo de Pizza",a.nombre AS "Area de Envío"
FROM pedidos AS p INNER JOIN restaurante AS r ON p.cod_rest = r.codigo INNER JOIN pizza AS z ON p.cod_pizza = z.codigo INNER JOIN area AS a ON p.cod_area = a.codigo 
ORDER BY r.nombre,z.nombre;


Imagen de: WikiHow


No hay comentarios:

Publicar un comentario