Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Guía 7 1
Facultad: Ingeniería
Escuela: Computación
Asignatura: Base de datos I
Objetivo
Específico
Definir las combinaciones externas
Conocer el uso de las combinaciones RIGTH y LEFT
Materiales y
Equipo
Computadora con SQL Server 2008 R2.
Guía Número 7
Introducción
Teórica
Una combinación interna (JOIN) encuentra registros de la primera tabla que se
correspondan con los registros de la segunda, es decir, que cumplan la condición del
"ON" y si un valor de la primera tabla no se encuentra en la segunda tabla, el registro no
aparece.
Las combinaciones externas combinan registros de dos tablas que cumplen la condición,
más los registros de la segunda tabla que no la cumplen; es decir, muestran todos los
registros de las tablas relacionadas, aún cuando no haya valores coincidentes entre ellas.
Este tipo de combinación se emplea cuando se necesita una lista completa de los datos
de una de las tablas y la información que cumple con la condición. Las combinaciones
externas se realizan solamente entre 2 tablas.
Hay tres tipos de combinaciones externas: "LEFT OUTER JOIN", "RIGHT OUTER JOIN"
y "FULL OUTER JOIN"; se pueden abreviar con "LEFT JOIN", "RIGHT JOIN" y "FULL
JOIN" respectivamente.
2 Base de datos I, Guía 7
Se emplea una combinación externa izquierda para mostrar todos los registros de la tabla
de la izquierda. Si no encuentra coincidencia con la tabla de la derecha, el registro
muestra los campos de la segunda tabla seteados a "null".
SELECT titulo,nombre
FROM editoriales AS e
LEFT JOIN libros AS l
ON codigoeditorial = e.codigo;
El resultado mostrará el título y nombre de la editorial; las editoriales de las cuales no hay
libros, es decir, cuyo código de editorial no está presente en "libros" aparece en el
resultado, pero con el valor "null" en el campo "titulo".
Entonces, un "left join" se usa para hacer coincidir registros en una tabla (izquierda) con
otra tabla (derecha); si un valor de la tabla de la izquierda no encuentra coincidencia en la
tabla de la derecha, se genera una fila extra (una por cada valor no encontrado) con todos
los campos
Sintaxis:
SELECT CAMPOS
FROM TABLAIZQUIERDA
LEFT JOIN TABLADERECHA
ON CONDICION;
Ejemplo 1:
SELECT tCoches.matricula,
tMarcas.marca,
tCoches.modelo,
tCoches.color,
tCoches.numero_kilometros,
tCoches.num_plazas
FROM tCoches
LEFT OUTER JOIN tMarcas ON tCoches.marca = tMarcas.codigo
Base de datos I. Guía 7 3
SELECT tCoches.matricula,
tMarcas.marca,
tCoches.modelo,
tCoches.color,
tCoches.numero_kilometros,
tCoches.num_plazas FROM tCoches
RIGHT OUTER JOIN tMarcas ON tCoches.marca = tMarcas.codigo
4 Base de datos I, Guía 7
Ejemplo 2
En este ejemplo se devuelven los valores buyer_name, buyer_id y qty de todos los
clientes y sus compras. Observe que los clientes que no han adquirido ningún producto se
enumeran en el conjunto de resultados, pero aparecen valores NULL en las columnas
buyer_id y qty.
USE joindb
SELECT buyer_name, sales.buyer_id, qty FROM buyers
LEFT OUTER JOIN sales ON buyers.buyer_id = sales.buyer_id
GO
Sugerencia:
Señale que la palabra clave ON y la lista de columnas asociada no se utilizan en la
instrucción SELECT porque las combinaciones cruzadas devuelven todas las
combinaciones posibles de las filas de cada tabla especificada.
En las combinaciones cruzadas no se requiere una columna común.
o SQL Server requiere que las tablas a las que se hace referencia tengan tipos de datos
similares, el mismo número de columnas y el mismo orden de columnas en la lista de
selección de cada consulta.
o SQL Server quita las filas duplicadas del conjunto de resultados. Sin embargo, si
utiliza la opción ALL, se incluyen todas las filas en el conjunto de resultados, incluso
las duplicadas.
o Debe especificar los nombres de las columnas en la primera instrucción SELECT. Por
lo tanto, si desea definir nuevos encabezados de columnas en el conjunto de
resultados, deberá crear los alias de columnas en la primera instrucción SELECT.
o Si desea que todo el conjunto de resultados aparezca con un orden específico, debe
especificar la ordenación con una cláusula ORDER BY en la instrucción UNION. De lo
contrario, puede que el conjunto de resultados no se devuelva en el orden que desea.
o Puede lograr un mayor rendimiento si divide una consulta compleja en varias
instrucciones SELECT y, después, utiliza el operador UNION para combinarlas.
Sintaxis
instrucciónSelect UNION [ALL] instrucciónSelect
Ejemplo 1:
En este ejemplo se combinan dos conjuntos de resultados. El primero devuelve el
nombre, la ciudad y el código postal de todos los clientes desde la tabla customers. El
segundo devuelve el nombre, la ciudad y el código postal de todos los empleados desde
la tabla employees. Observe que, cuando se utiliza el operador UNION para combinar
ambos conjuntos de resultados, se devuelven los alias de las columnas de la primera lista
de selección.
USE northwind
SELECT (firstname + ' ' + lastname) AS name, city, postalcode
FROM employees
UNION
SELECT companyname, city, postalcode
FROM customers
GO
Base de datos I. Guía 7 7
Procedimiento
Bibliografía
Realice los siguientes ejercicios.
Investigación
Complementaria
La tarea a realizar será asignada por el instructor
Guía 3
Bibliografía
Guía 4
Francisco 3Charte Ojeda, SQL Server 2008. Madrid, España : ANAYA, 2009 1era edicion
fía
Guía 4
fía
10 Base de datos I, Guía 7
US DE COMBINACIONES
Guía 7:
Hoja de cotejo: 7
EXTERNAS Docente: 1
Alumno:
Tema: Presentación del programa Máquina No:Máquina No:
EVALUACION
ACTITUD
Del 15% No tiene Actitud Tiene actitud
al 30% actitud propositiva y proactiva y sus
proactiva con propuestas son
. propuestas no concretas.
aplicables al
contenido de
la guía.
TOTAL 100%