Está en la página 1de 18

COMBINACION DE

TABLAS
SELECT
EJEMPLOS
Grupo Docente

Curso
COMBINACION DE TABLAS: JOIN
Los tipos de combinaciones más comunes son las reuniones, las que pueden ser internas o
externas: INNER JOIN (reunión interna), LEFT OUTER JOIN (reunión externa izquierda), RIGHT
OUTER JOIN (reunión externa derecha), FULL OUTER JOIN (reunión externa completa, que es la
unión de LEFT OUTER JOIN y RIGHT OUTER JOIN), y CROSS JOIN (producto cartesiano de dos
tablas).

SELECT columnas
FROM tabla_1 Tipo JOIN tabla_2
ON tabla_1.columna_x comparador tabla_2.columna_y
COMBINACION DE TABLAS: JOIN
SELECT columnas
FROM tabla_1 TIPO JOIN tabla_2
ON tabla_1.columna_x comparador tabla_2.columna_y
1. La palabra clave JOIN especifica qué tablas(tabla_1 y tabla_2 ) se van a combinar y cómo.
Considere el nombre de tabla con alias o no, resultado de una consulta
Pueden ser las dos la misma tabla, en este caso es obligatorio definir al menos un alias de tabla.
2. La palabra clave ON especifica la condición de combinación
columna_x, columna_y son las columnas de emparejamiento. Deben ser columnas comunes o que
almacenen la misma información.
Por lo regular columna_x y columna_y representan la clave principal y foránea como condiciones
de combinación
comparador representa cualquier operador de comparación (=, <, >, <=, >=, o <>) y se utiliza para
establecer la condición de emparejamiento.
Uso de alias en los nombres de tablas
Ejemplo 1 (sin un nombre de alias)
SELECT Curso.cursoID, nombre_curso, denominacion, capacidad
FROM Grupo INNER JOIN Curso
ON Grupo.cursoID = Curso.cursoID

Ejemplo 2 (con un nombre de alias)


SELECT cu.cursoID, nombre_curso, denominacion, capacidad
FROM Grupo as gr INNER JOIN Curso as cu
ON gr.cursoID = cu.cursoID
Uso de combinaciones internas:
INNER
Las combinaciones internas combinan tablas mediante la
comparación de los valores de las columnas que son comunes a
ambas tablas. Sólo devuelve las filas que cumplen las condiciones
de la combinación.

SELECT c.cursoID, nombre_curso, denominacion


FROM Grupo g INNER JOIN Curso c
ON g.cursoID = c.cursoID
SELECT c.cursoID, nombre_curso, denominacion
FROM Grupo g INNER JOIN Curso c
ON g.cursoID = c.cursoID

Grupo Curso
grupoID cursoID denominacion cursoID nombre_curso creditos
1 10 A 10 Base de datos 4
2 25 A 20 Progamación 1 4
3 25 B 25 Administration de BD 4
4 40 A 30 Programación 2 4
40 Inteligencia de negocios 3
Resultado
cursoID nombre_curso denominacion
10 Base de datos A
25 Administration de BD A
25 Administration de BD B
40 Inteligencia de negocios A
Uso de las combinaciones externas
Un outer join es la consulta correlacionada que entrega todas las filas que están relacionadas, y
además:
Las filas no relacionadas de la tabla izquierda (LEFT OUTER JOIN ), o
Las filas no relacionadas de la tabla derecha (RIGHT OUTER JOIN), o
Las filas no relacionadas de ambas tablas (FULL OUTER JOIN)
Las filas que no cumplen la condición de combinación presentan NULL en el conjunto de
resultados.
Se considera como tabla izquierda, a aquella que se menciona en la cláusula FROM.
Utilice las combinaciones externas izquierda o derecha cuando necesite una lista completa de
los datos de una de las tablas combinadas más la información que cumpla la condición de
combinación
SELECT docenteid, nombre_docente, cursoid, denominacion
FROM Grupo g LEFT JOIN Docente d
ON g.docente_id = c.docenteid

Grupo Docente
grupoID Docente_id denominacion cursoid docenteid nombre_docente dni
1 100 A 10 100 Lip Curo Guadalupe 44522020
2 101 A 25 101 Castillo Zumarán Jose 16761275
3 101 B 25 102 Coronel Díaz Luis 40405225
4 Null A 40 103 Mera Montengro Huilmer 20201524
104 Castro Del Castillo Ivonne 25256523
Resultado
docenteID nombre_docente cursoid denominacion
100 Lip Curo Guadalupe 10 A
101 Castillo Zumarán Jose 25 A
101 Castillo Zumarán Jose 25 B
Null Null 40 A
Uso de las combinaciones cruzadas
SELECT nombre_cliente, unidades Resultado
FROM Cliente nombre_cliente unidades
CROSS JOIN Venta
Adam Barr 15
Cliente Venta Adam Barr 5
clienteid nombre_cliente clienteid prod_id unidades Adam Barr 37
1 Adam Barr 1 2 15 Adam Barr 11
2 Sean Chai 1 3 5 Adam Barr 1003
3 Eva Corets 4 1 37 Sean Chai 15
4 Erin O'Melia 3 5 11 Sean Chai 5
4 2 1003 Sean Chai 37
Sean Chai 11
Sean Chai 1003
Eva Corets 15
... ...
Combinación de más de dos tablas

Select g.cursoid,c.nombre_curso, g.denominacion, c.ciclo_academico, c.creditos,


d.ape_paterno || ' ' || d.ape_materno || ' ' || d.nombres as Nombre_docente
from grupo g inner join curso c on g.cursoid=c.cursoid
left join Docente d on g.docente_id=d.docenteid
where semestreid='2020-1'
Combinación de una tabla consigo
misma
Select
c1.cursoid,c1.nombre_curso,c1.ciclo_academico
, c1.creditos, c2.nombre_curso as
Pre_requisito, c2.ciclo_academico
from pre_requisito pr inner join curso c1 on
pr.cursoid=c1.cursoid
inner join Curso c2 on
pr.cursoid_pre=c2.cursoid
Combinación de varios conjuntos de
resultados
Use el operador UNION para crear un conjunto de resultados único a partir de varias consultas
Cada consulta debe tener:
1. tipos de datos similares
2. el mismo número de columnas
3. el mismo orden de columnas en la lista de selección
Ejercicios
 Listar los alumnos ingresantes de Ingeniería de sistemas en el semestre 2016-1. De cada uno mostrar:
Nombre completo, tipo de documento, numero de documento, sexo alumno, edad de ingreso, Departamento/Provincia/Distrito,
email, teléfono móvil, modalidad de ingreso, plan de estudio

select alum.apellidopaterno || ' ' || alum.apellidomaterno || ' ' || alum.nombres as Estudiante,


tipdoc.descripcion as "Tipo documento", alum.numero_documento, alum.sexo_alumno,
age(fecha_registro,fecha_nacimiento) as edad,
ubi.nombre_departamento || '/' || ubi.nombre_provincia || '/' || ubi.nombre_distrito as Ubigeo,
alum.email, alum.telefono_movil, mod.descripcion as Modalidad_ingreso, pla.descripcion as plan_estudio
from alumno alum inner join tipo_documento tipdoc on alum.tipodocid = tipdoc.tipodocid
inner join ubigeo ubi on alum.ubigeo_procedencia = ubi.ubigeo_id
inner join modalidad_ingreso mod on alum.modalidadid = mod.modalidadid
inner join plan_estudio pla on alum.planid = pla.planid
 Listar para un docente especifico, los cursos asignados en el semestre 2018-2
Código curso, Nombre curso, ciclo, créditos, total de horas, escuela profesional, plan de estudio
select cur.cursoid, cur.nombre_curso, cur.ciclo_academico,cur.creditos, cur.h_teoria,cur.h_practica,
esc.nombre_escuela,pla.descripcion as plan_estudio
from grupo as gru inner join docente as doc on doc.docenteid=gru.docente_id
inner join curso as cur on gru.cursoid =cur.cursoid
inner join escuela esc on cur.escuela_id=esc.escuelaid
inner join plan_estudio pla on cur.planid=pla.planid
where semestreid='2020-1' and docenteid=1
 Para que cursos del plan de estudio 2017 de la escuela de Ingeniería de sistemas, no e han aperturado grupos en el semestre 2020-1
Código curso, Nombre curso, ciclo, créditos, total de horas, escuela profesional, plan de estudio
 Mostrar el horario del laboratorio 105 del edificio antiguo para el día Martes
Hora inicio, Hora fin, Nombre escuela, Nombre curso, denominación, Nombre docente
 Conocido el numero de documento de un estudiante, mostrar los cursos en los que se matriculó en el semestre 2020-1
Código curso, Nombre curso, ciclo, créditos, total de horas, Nombre docente ---SI LO SE OK
 Listar los alumnos que ingresaron en semestre 2018-2 de la escuela profesional de Ingeniería de sistemas y computación. De ellos
mostrar la siguiente información:
Tipo de documento, Numero de documento, nombre completo, Edad actual, sexo, semestre de ingreso, modalidad de ingreso,
Distrito/Provincia/Departamento, Descripción plan de estudio. ---------si lo se ok
Ejercicios
 Listar los grupos abiertos para el 5to ciclo de la escuela de Ingeniería de sistemas y computación del plan de estudios 2017
ciclo, Nombre del curso, denominación grupo, créditos, total horas, nombre completo del docente
 Para que cursos del plan de estudio 2017, no se han aperturado grupo en el semestre 2020-1
Ciclo, Nombre de curso, créditos, total horas
 De los docentes que han dictado el semestre 2019-2, a que docentes no se les asigno carga alguna en el semestre 2020-1?
Nombre completo del docente, semestre de ingreso
 Ingresado el dni de un alumno, mostrar los cursos aprobados por ciclo académico
ciclo, Nombre curso, semestre cuando lo llevó, nota aprobatoria
 Ingresado el dni de un alumno, mostrar los cursos que le falta llevar por ciclo académico -------LE FALTA LLEVAR NECESITO LA
MATRICULA,DETALLE MATRICULA, GRUPO,CURSO,ALUMNO
ciclo, Nombre curso

WWW.ZOOM.COM

También podría gustarte