Vous êtes sur la page 1sur 15

Consultas multitabla

ndice
Multiplicaciones de tablas. Formato . Combinaciones simples (JOIN). Formato Combinaciones de una tabla consigo misma Combinaciones externas (OUT ! JOIN)

Multiplicaciones de tablas. Formato


"ara acceder a dos o m#s tablas de una base de datos$ %&' genera internamente una tabla en la (ue cada )ila de una tabla se combina con todas * cada una de las )ilas de las dem#s tablas indicadas. +s decir$ reali,a el producto cartesiano de las tablas.
SELECT nombre_columnas, ... FROM NombreTabla [alias] ,NombreTabla [alias]

Multiplicaciones de tablas. Formato


-emplo. (bd. empresa)
SELECT em"_no #n$ em"lea%o&, a"elli%o , nombre #%e"ar'amen'o&, locali%a% FROM em"lea%os, %e"ar'amen'o

(Cu)n'as *ilas se ob'ienen+


!

Combinaciones %imples. JOIN. Formato


Una combinaci/n (-oin) consiste en aplicar una condici/n de selecci/n a las )ilas obtenidas de la multiplicaci/n de las tablas sobre las (ue se est# reali,ando una consulta. "ara la condici/n de selecci/n se recomienda usar atributos (ue relacionan sendas tablas (cla0e principal * cla0e a-ena).
SELECT nombre_columnas, ... FROM NombreTabla [alias] ,NombreTabla [alias] -.ERE Con%ici/nCombinaci/n

Combinaciones %imples. JOIN. Formato


-emplo
SELECT em"_no #n$ em"lea%o&, a"elli%o , nombre #%e"ar'amen'o&, locali%a% FROM em"lea%os as em, %e"ar'amen'o as %e -.ERE em.%e"_no 1 %e.%e"_no

Combinaciones de una tabla consigo misma


%i desde una )ila de una tabla podemos acceder a otra )ila de la misma tabla$ duplicando la tabla$ estamos reali,ando una combinaci/n de una tabla consigo misma. -emplo. Obtener una lista de los empleados con los nombres de sus directores.
SELECT e3.em"_no #n$ em"lea%o&, e3.a"elli%o , e3.%irec'or, e2. 4"elli%o #4"elli%o 5irec'or& FROM em"lea%os as e3, em"lea%os e2 -.ERE e3.%irec'or 1 e2.em"_no

Combinaciones de una tabla consigo misma


%oluci/n

En es'e caso s/lo ob'enemos in*ormaci/n %e los em"lea%os 7ue 'ienen asi8na%o un %irec'or, "ero no nos %ice na%a %e los em"lea%os 7ue no 'ienen asi8na%o un %irec'or. 9.a: em"lea%os 7ue no 'ienen %irec'or, "roba%lo;

Combinaciones de una tabla consigo misma


Otro e-emplo. Obtener los -e)es de los empleados cu*o o)icio sea 10endedor2.

<

Combinaciones externas (OUT ! JOIN)


n ocasiones$ el resultado de una consulta no es el esperado. Como 3emos 0isto en el e-emplo anterior$ s/lo obtenemos in)ormaci/n de los empleados (ue cumplen la condici/n$ pero no de todos. s aconse-able (ue el resultado de una consulta muestre todas sus )ilas$ aun(ue algunas con )alta de in)ormaci/n. "ara conseguir este resultado se utili,a la combinaci/n externa OUT ! JOIN.

3=

Combinaciones externas (OUT ! JOIN)


Formato
SELECT nombre_columnas, ... FROM NombreTabla [alias] LEFT > R?@.T [OATER] BO?N NombreTabla [alias] ON Con%ici/nCombinaci/n

LEFT | RIGHT [OUTER] JOINC in%ica 7ue es un Doin eE'erno : si la eE'ensi/n %el "ro%uc'o %e las 'ablas se 7uiere realiFar "or la iF7uier%a o "or la %erecGa. CondicinCombinacinC es la misma con%ici/n %e combinaci/n an'erior, "ero escri'a a7uH en lu8ar %e en la cl)usula -.ERE.

33

Combinaciones externas (OUT ! JOIN)


l )uncionamiento es el siguiente

LEFT JOINC Doin %on%e se ob'ienen 'o%as las *ilas %e la 'abla %e la iF7uier%a, aun7ue no 'en8a corres"on%encia en la 'abla %e la %erecGa. En los Ialores 7ue no Ga: corres"on%encia a"arece NALL. RIGHT JOINC Doin %on%e se ob'ienen 'o%as las *ilas %e la 'abla %e la %erecGa, aun7ue no 'en8an corres"on%encia en la 'abla %e la iF7uier%a. En los Ialores 7ue no Ga: corres"on%encia a"arece NALL. EjemploC JisualiFar los %a'os %e los %e"ar'amen'os : %e sus em"lea%os, IisualiFan%o 'ambiKn los %e"ar'amen'os 7ue no 'en8an em"lea%os.

select nombre departamento, localidad, emp_no "n empleado", apellido from departamentos d left join empleados e on d.dep_no = e.dep_no;

32

Combinaciones externas (OUT ! JOIN)


!esultado.

33

Combinaciones externas (OUT ! JOIN)


-emplos.
Obtener los departamentos con su nombre y localidad y el nmero de empleados trabajando en ellos, incluyendo los que no tienen empleados. select nombre departamento, localidad, count(emp_no)
from departamentos d left join empleados e on d.dep_no = e.dep_no group by nombre, localidad;

3!

Combinaciones externas (OUT ! JOIN)


-emplos.
Obtener la lista de empleados con los nombres de sus directores, incluyendo al PRESIDENTE.
select e1.apellido nombre empleado, e2.apellido nombre director from empleados e1 left join empleados e2 on e1.director = e2.emp_no;

3,

Vous aimerez peut-être aussi