Вы находитесь на странице: 1из 3

Base de Datos II 1 Ing.

Vladimir Richter

Prctica 3
Joins
El comando join se utiliza para consultar datos de dos o ms tablas, basndose en la relacin que existe entre esas tablas.

Crear la siguiente base de datos Pedidos


Duracin 30 minutos: Tabla Personas P_Id (PK) 1 2 3 Tabla rdenes Id_ O (PK) 1 2 3 4 5 Apellido Hansen Svendson Petterson Nombre Ola Tove Kari Direccin Timoteivn 10 Borgn 20 Storgt 20 Ciudad Sandnes Sandnes Stavanger

No_Orden 77895 44678 22456 24562 34764

P_Id (FK) 3 3 1 1 15

Veamos los diferentes joins: JOIN o INNER JOIN: devuelve filas cuando existe al menos una coincidencia en ambas tablas LEFT JOIN: devuelve todas las filas de la tabla de la izquierda incluso si no hay coincidencias con la otra tabla. RIGHT JOIN: Devuelve todas las filas de la tabla a la derecha, incluso si no hay coincidencias con la otra tabla. FULL JOIN: Devuelve todas las filas de la tabla derecha como de la tabla izquierda.

Ejemplo utilizando las tablas personas y rdenes INNER JOIN


Queremos listar a todas las personas que hayan ordenado algn producto.
selectpersonas.Apellido,personas.Nombre,ordenes.No_Orden from personas innerjoin ordenes onpersonas.P_Id=ordenes.P_Id ordeybyperonas.apellido

Base de Datos II 2 Ing. Vladimir Richter Cul es la tabla resultante?

LEFT JOIN
Queremos listar a todas las personas que hicieron una orden y a aquellas que no hicieron ninguna orden.
selectpersonas.Apellido,personas.Nombre,ordenes.No_Orden frompersonas LEFT joinordenes onpersonas.P_Id=ordenes.P_Id ordeybyperonas.apellido

NOTA: El comando LEFT JOIN devuelve todas las filas de la tabla izquierda (personas) aunque no existan coincidencias en la tabla derecha (ordenes) Cul es la tabla resultante?

RIGHT JOIN
Queremos listar todas las rdenes que tienen dueo y todas las rdenes que no tienen dueo.
selectpersonas.Apellido,personas.Nombre,ordenes.No_Orden frompersonas rightjoinordenes onpersonas.P_Id=ordenes.P_Id ordeybyperonas.apellido

NOTA: El comando RIGHT JOIN devuelve todas las filas de la tabla derecha (ordenes) aunque no existan coincidencias en la tabla izquierda (personas) Cul es la tabla resultante?

FULL JOIN
Queremos listar todas las personas con sus rdenes y todas las rdenes con sus dueos
selectpersonas.Apellido,personas.Nombre,ordenes.No_Orden frompersonas fulljoinordenes onpersonas.P_Id=ordenes.P_Id ordeybyperonas.apellido

NOTA El comando FULL JOIN devuelve todas las filas de ambas tablas

Base de Datos II 3 Ing. Vladimir Richter

Crear la siguiente base de datos


Duracin 40 minutos Se desea disear una base de datos para las reservas de una empresa dedicada al alquiler de automviles, teniendo en cuenta que: Un determindado cliente puede realizar varias reservas. De cada cleinte se desea almacenar su CI, nombre, direccin y telefono, adems dos cleintes se diferencian por un cdigo nico. Cada cleinte puede ser avalado por otro cliente de la empresa. Una reserva la realiza un solo cleinte pero puede involucrar varias reservas. Es importante registrar la fecha de inicio y final de la reserva, el precio del alquiler de cada uno de los coches, los litros de gasolina en el depsito en el momento de realiza al reserva, el precio total de la reserva y un indicador de si el coche o los coches han sido entregados. Todo coche tiene siempre asignado un determinado garaje que no puede cambiar. De cada coche se requiere la matrcula, el modelo, el color y la marca. Cada reserva se realiza en una determinada agencia.