Está en la página 1de 11

CONSULTAS MULTI-TABLAS (JOIN)

SELECT * FROM modelo_piano, diseador


idModelo Nombre Diseador_idDiseador idDiseador Nombre Apellido Contacto
1 Melody 3 1 Gustavo Jeanneret gjeanneret@gmail.com
1 Melody 3 2 Rafael Widow rwidow@gmail.com
1 Melody 3 3 Fabiana Bevilacqua fbevilacqua@gmail.com
2 Fire 2 1 Gustavo Jeanneret gjeanneret@gmail.com
2 Fire 2 2 Rafael Widow rwidow@gmail.com
2 Fire 2 3 Fabiana Bevilacqua fbevilacqua@gmail.com
3 Swing 2 1 Gustavo Jeanneret gjeanneret@gmail.com
3 Swing 2 2 Rafael Widow rwidow@gmail.com
3 Swing 2 3 Fabiana Bevilacqua fbevilacqua@gmail.com
4 Smart 1 1 Gustavo Jeanneret gjeanneret@gmail.com
4 Smart 1 2 Rafael Widow rwidow@gmail.com
4 Smart 1 3 Fabiana Bevilacqua fbevilacqua@gmail.com
5 Fire 3 1 Gustavo Jeanneret gjeanneret@gmail.com
5 Fire 3 2 Rafael Widow rwidow@gmail.com
5 Fire 3 3 Fabiana Bevilacqua fbevilacqua@gmail.com


CROSS JOIN
SELECT * FROM modelo_piano, diseador
idModelo Nombre Diseador_idDiseador idDiseador Nombre Apellido Contacto
1 Melody 3 1 Gustavo Jeanneret gjeanneret@gmail.com
1 Melody 3 2 Rafael Widow rwidow@gmail.com
1 Melody 3 3 Fabiana Bevilacqua fbevilacqua@gmail.com
2 Fire 2 1 Gustavo Jeanneret gjeanneret@gmail.com
2 Fire 2 2 Rafael Widow rwidow@gmail.com
2 Fire 2 3 Fabiana Bevilacqua fbevilacqua@gmail.com
3 Swing 2 1 Gustavo Jeanneret gjeanneret@gmail.com
3 Swing 2 2 Rafael Widow rwidow@gmail.com
3 Swing 2 3 Fabiana Bevilacqua fbevilacqua@gmail.com
4 Smart 1 1 Gustavo Jeanneret gjeanneret@gmail.com
4 Smart 1 2 Rafael Widow rwidow@gmail.com
4 Smart 1 3 Fabiana Bevilacqua fbevilacqua@gmail.com
5 Fire 3 1 Gustavo Jeanneret gjeanneret@gmail.com
5 Fire 3 2 Rafael Widow rwidow@gmail.com
5 Fire 3 3 Fabiana Bevilacqua fbevilacqua@gmail.com


CROSS JOIN
Tabla con NxM filas (N: nmero filas tabla 1, M nmero filas tabla 2)
no muy til puede generar tablas sin sentido
SELECT * FROM modelo_piano CROSS JOIN diseador
EQUIVALENTE A:


CROSS JOIN
Ejemplo de una tabla (generada con CROSS JOIN) sin sentido:
idModelo Nombre Diseador_idDiseador idTcnico Nombre Apellido Contacto
1 Melody 3 1 Montserrat Barra mbarra@gmail.com
1 Melody 3 2 Valentina Fassler vfassler@gmail.com
1 Melody 3 3 Juan Silva jsilva@gmail.com
1 Melody 3 4 Arturo Ovalle aovalle@gmail.com
2 Fire 2 1 Montserrat Barra mbarra@gmail.com
2 Fire 2 2 Valentina Fassler vfassler@gmail.com
2 Fire 2 3 Juan Silva jsilva@gmail.com
2 Fire 2 4 Arturo Ovalle aovalle@gmail.com
3 Swing 2 1 Montserrat Barra mbarra@gmail.com
3 Swing 2 2 Valentina Fassler vfassler@gmail.com
3 Swing 2 3 Juan Silva jsilva@gmail.com
3 Swing 2 4 Arturo Ovalle aovalle@gmail.com
4 Smart 1 1 Montserrat Barra mbarra@gmail.com
4 Smart 1 2 Valentina Fassler vfassler@gmail.com
4 Smart 1 3 Juan Silva jsilva@gmail.com
4 Smart 1 4 Arturo Ovalle aovalle@gmail.com
5 Fire 3 1 Montserrat Barra mbarra@gmail.com
5 Fire 3 2 Valentina Fassler vfassler@gmail.com
5 Fire 3 3 Juan Silva jsilva@gmail.com
5 Fire 3 4 Arturo Ovalle aovalle@gmail.com


No hay relacin entre las tablas => no se puede obtener informacin relacionada
SELECT * FROM modelo_piano CROSS JOIN tcnico


CROSS JOIN


=> CROSS JOIN se usa muy poco
SELECT * FROM modelo_piano, diseador
WHERE modelo_piano.Diseador_idDiseador=diseador.idDiseador;

INNER JOIN
idModelo Nombre Diseador_idDiseador idDiseador Nombre Apellido Contacto
1 Melody 3 3 Fabiana Bevilacqua fbevilacqua@gmail.com
2 Fire 2 2 Rafael Widow rwidow@gmail.com
3 Swing 2 2 Rafael Widow rwidow@gmail.com
4 Smart 1 1 Gustavo Jeanneret gjeanneret@gmail.com
5 Fire 3 3 Fabiana Bevilacqua fbevilacqua@gmail.com


SELECT * FROM modelo_piano INNER JOIN diseador
WHERE modelo_piano.Diseador_idDiseador=diseador.idDiseador;
SELECT * FROM modelo_piano INNER JOIN diseador
ON modelo_piano.Diseador_idDiseador=diseador.idDiseador;
SELECT modelo_piano.Nombre, diseador.Nombre, diseador.Apellido
FROM modelo_piano INNER JOIN diseador
ON modelo_piano.Diseador_idDiseador=diseador.idDiseador;


INNER JOIN


Nombre Nombre Apellido
Melody Fabiana Bevilacqua
Fire Rafael Widow
Swing Rafael Widow
Smart Gustavo Jeanneret
Fire Fabiana Bevilacqua


SELECT modelo_piano.Nombre, diseador.Nombre, diseador.Apellido
FROM modelo_piano, diseador
ON modelo_piano.Diseador_idDiseador=diseador.idDiseador;
SELECT modelo_piano.Nombre, diseador.Nombre, diseador.Apellido
FROM modelo_piano, diseador
WHERE modelo_piano.Diseador_idDiseador=diseador.idDiseador;
INNER JOIN


idModelo Nombre Diseador_idDiseador
1 Melody 3
2 Fire 2
3 Swing 2
4 Smart 1
5 Fuoco 3
idDiseador Nombre Apellido Contacto
1 Gustavo Jeanneret gjeanneret@gmail.com
2 Rafael Widow rwidow@gmail.com
3 Fabiana Bevilacqua fbevilacqua@gmail.com
modelo_piano
diseador
INNER JOIN
El orden en que se aplica INNER JOIN NO afecta el resultado ( o cmo se despliega)
SELECT modelo_piano.Nombre, diseador.Nombre, diseador.Apellido
FROM modelo_piano INNER JOIN diseador
ON modelo_piano.Diseador_idDiseador=diseador.idDiseador;
SELECT modelo_piano.Nombre, diseador.Nombre, diseador.Apellido
FROM diseador INNER JOIN modelo_piano
ON modelo_piano.Diseador_idDiseador=diseador.idDiseador;
Nombre Nombre Apellido
Melody Fabiana Bevilacqua
Fire Rafael Widow
Swing Rafael Widow
Smart Gustavo Jeanneret
Fire Fabiana Bevilacqua
INNER JOIN CON VARIAS TABLAS
Liste de los modelos de piano inspeccionados por Montserrat Barra
SELECT modelo_piano.Nombre
FROM tcnico, inspeccion, piano, modelo_piano
WHERE tcnico.Nombre='Montserrat' AND tcnico.idTcnico=inspeccion.Tcnico_idTcnico
AND inspeccion.Piano_idPiano=piano.idPiano AND
piano.Modelo_idModelo=modelo_piano.idModelo;
Nombre
Melody
Melody
Melody
Melody
Fire
Swing
Swing
Swing
Smart
Smart
Fuoco
Fuoco
Fuoco
Fuoco
SELECT modelo_piano.Nombre
FROM modelo_piano INNER JOIN piano INNER JOIN inspeccion
INNER JOIN tcnico
ON tcnico.Nombre='Montserrat' AND
tcnico.idTcnico=inspeccion.Tcnico_idTcnico AND
inspeccion.Piano_idPiano=piano.idPiano AND
piano.Modelo_idModelo=modelo_piano.idModelo;
Consultas SQL equivalentes
COMPETENCIA INNER JOIN


1. Arme los grupos de trabajo del proyecto (grupos de 5 personas
cada uno).

2. Escriba una lista de 4 consultas multi-tablas (por ejemplo: liste los
nombres de los modelos de piano inspeccionados por Montserrat. Por supuesto, esta
consulta no se puede incorporar en la lista).

3. Resuelva sus consultas.

4. Escoja un miembro del equipo para que acte como juez.

5. Intercambie la lista de consultas y el juez con otro grupo.

6. Comienza la competencia: el juez verifica si se ha respondido
correctamente cada consulta (si el juez falta a la tica, no recibe
premio).

7. En la medida que los grupos terminan (validados por el juez), tienen
derecho a escoger su premio (ms se demoran, menos opciones tienen).