Sunteți pe pagina 1din 7

Las consultas que el profesor te dio netamente es acerca del uso de la

sentencia INNER JOIN, que te permite relacionar varias tablas en una misma
consulta, en base a la cable fornea que una tabla comparte con otra(recuerda
la clave fornea representa la clave primaria de otra tabla).

Ejemplo: Un alumno puede llevar muchos cursos y un curso es dictado por un


profesor
Alumno
IdAlumno PK
CursoIdCurso FK

Curso
IdCurso PK

Profesor
IdProfesor PK
CursoIdCurso FK

PK: Clave Primaria


FK:Clave Foranea

Ejercicio: Mustrame el nombre de todos los profesores que le


ensean a un alumno.
Solucin:
Como tu deseas saber el nombre del profesor, necesariamente necesitas usar
la tabla Profesor, pero al mismo tiempo te piden que estos profesores estn
relacionados con un determinado alumno.
Para el uso del inner join t debes de buscar un camino de tal manera de que
puedas usar las tablas que necesitas para mostrar los resultados que te pide tu
sentencia (ten en consideracin que cada tabla que relacionas deben estar
relacionados valga la redundancia por una clave fornea), en este ejemplo a ti
te piden relacionar alumno y profesor, si te fijas en este ejemplo la nica forma
de cmo llegar de profesor a alumnos es pasando por la tabla cursos:
Alumno -> Cursos -> Profesor
Esto se debe a que un alumno lleva un curso y a que todo curso es dictado
por un profesor.
Una vez detectado el camino que usaremos para realizar nuestra consulta,
haremos el proceso como un cangrejo, es decir iniciaremos desde la ltima
tabla a relacionar en nuestro caso sera:

Profesor -> Cursos -> Alumno


Ahora comencemos a realizar nuestra consulta:
Primero identificar qu es lo que nos piden: Mustrame el nombre de
todos los profesores, esto quiere decir que de la tabla Profesor usaremos
un atributo Nombre que de seguro debe de tener entonces dentro de nuestra
consulta debe de estar un Profesor.Nombre (esto indica que de la tabla
profesor tomare el atributo nombre).
Una vez identificado todos los datos que deber mostrar nuestra sentencia,
procedemos a identificar todas las claves forneas que habrn en cada relacin
dentro de nuestro camino, recuerda nosotros estamos usando el siguiente
camino:
Profesor -> Cursos -> Alumno
De la ltima tabla a relacionar a la primera, un camino tipo cangrejo,
comencemos con las tablas Profesor y Cursos, primero detectemos la clave
foranea de la tabla Profesor, recuerda que una fornea representa a una
primaria de otra tabla.
Profesor -> Cursos
Detectamos que en Profesor tenemos una fornea Profesor.CursoIdCurso la
cual es la fornea de la tabla Curso y ser la que nos permitir relacionar ms
adelante estas dos tablas usando el inner join.
Ahora procedemos con las siguientes tablas:
Cursos -> Alumno
Observamos que en alumno existe una clave fornea que nos permitir
relacionar Cursos con alumnos y esta es Alumno.CursoIdCurso.
Finalmente tenemos:

Nos piden: Mustrame el nombre de todos los


profesores(Profesor.Nombre)
Camino elegido: Profesor -> Cursos -> Alumno
Claves Forneas detectadas: Profesor.CursoIdCurso,
Profesor.CursoIdCurso

Una vez detectada todas las forneas dentro de nuestro camino


seleccionado, procedemos a realizar nuestra sentencia.
SINTAXIS DE LA SENTENCIA INNER JOIN
SELECT AQU VA LO QUE DESEAS OBTENER FROM PRIMERA TABLA DE TU
CAMINO
INNER JOIN
SEGUNDA TABLA DE TU CAMINO ON
RELACION DE ATRIBUTOS ENTRE LA SEGUNDA TABLA Y LA PRIMERA TABLA
QUE ANTERIORMENTE INGRESASTE

INNER JOIN TERCERA TABLA DE TU CAMINO ON


RELACION DE ATRIBUTOS ENTRE LA SEGUNDA TABLA Y LA TERCERA TABLA
QUE ANTERIORMENTE INGRESASTE
.
.
.
WHERE UNA CONDICION SI ES LA HUBIERA;

APLICACIN A NUESTRO EJEMPLO:


SELECT Profesor.Nombre FROM Profesor

INNER JOIN Cursos ON


Cursos.IdCurso=Profesor.CursoIdCurso
INNER JOIN Alumno ON
Alumno.CursoIdCurso= Curso.IdCurso;
Reemplazamos:

SELECT AQU VA LO QUE DESEAS OBTENER // Lo que deseamos


obtener es Profesor.Nombre
FROM PRIMERA TABLA DE TU CAMINO // Recuerda nuestro camino
es Profesor->Curso->Alumno por lo que reemplazaremos por Profesor
INNER JOIN SEGUNDA TABLA DE TU CAMINO ON //NUESTRA
SEGUNDA TABLA DE NUESTRO CAMINO ES CURSO
RELACION DE ATRIBUTOS ENTRE LA SEGUNDA TABLA Y LA PRIMERA
TABLA QUE ANTERIORMENTE, Recuerda lo que mencione antes una
clave fornea representa una primaria de otra tabla , en esta parte
relacionaremos ambas tablas mediante la fornea, observa:

Profesor y Cursos se relacionan a travs de la clave fornea CursoIdCurso la


cual representa la clave primaria de cursos, por lo que reemplazaramos por
Cursos.IdCurso=Profesor.CursoIdCurso
Recuerda siempre empezarla relacin por la tabla que estas uniendo con el
inner join INNER JOIN Cursos ON (estas uniendo a la tabla profesor
la tabla cursos por lo que sera la relacin de la siguiente manera
Cursos.IdCurso=Profesor.CursoIdCurso).

INNER JOIN TERCERA TABLA DE TU CAMINO ON //LA TERCERA TABLA DE


NUESTRO CAMINO ES ALUMNO
RELACION DE ATRIBUTOS ENTRE LA SEGUNDA TABLA Y LA PRIMERA
TABLA QUE ANTERIORMENTE, Recuerda lo que mencione antes una clave
fornea representa una primaria de otra tabla , en esta parte
relacionaremos ambas tablas mediante la fornea, observa:

Curso y Alumno se relacionan a travs de la clave fornea CursoIdCurso la cual


representa la clave primaria de cursos, por lo que reemplazaramos por
Alumno.CursoIdCurso= Curso.IdCurso;
Recuerda siempre empezarla relacin por la tabla que estas uniendo con el
inner join INNER JOIN Alumno ON (estas uniendo a la tabla Curso la
tabla Alumno por lo que sera la relacin de la siguiente manera
Alumno.CursoIdCurso= Curso.IdCurso).
Como puedes notar ya relacionamos todas las tablas que necesitaremos para
realizar nuestra consulta de esta manera nos aseguramos que nuestra consulta
tomara la relacin existente que hay entre alumnos, cursos y profesor.
Ahora si puedes observar tambin est la clusula Where , esta se usa en el
caso de que haya una condicin que quieras que cumpla entre la relacin de
las tablas que has unido con el inner join , imagina que en la tabla curso hay un
atributo que se llama ciclo, que representa el ciclo al que corresponde el
curso , ahora modifiquemos el problema , que fuera de que nos de una
lista de profesores por curso de un alumno que este solo me liste solo
los profesores que corresponden al 7 ciclo.
Entonces nuestra sentencia quedara de la siguiente manera:
SELECT Profesor.Nombre FROM Profesor

INNER JOIN Cursos ON


Cursos.IdCurso=Profesor.CursoIdCurso
INNER JOIN Alumno ON
Alumno.CursoIdCurso= Curso.IdCurso
Where Curso.ciclo=7;
Agregan esta ltima lnea nos condicionara a que solo nos muestre el nombre
todos los profesores de todos los cursos que el alumno lleva pero que solo
corresponden al 7 ciclo.

SOLUCION DEL PRIMER EJERCICIO PROPUESTO:

Mostrar los ttulos de las publicaciones agrupadas por peridicas.


1. Identificamos que es lo que nos pide el enunciado: ttulos de las publicaciones
agrupadas por peridicas: Publicacion.titulo
2. Identificar camino a recorrer: ttulos de las publicaciones agrupadas por
peridicas.
Como puedes observar en el enunciado podemos identificar 2 tablas
publicaciones y peridicas, por lo que debes de buscar un camino que relacione
esas dos tablas.

Nuestro camino seria:


Periodicas-> Publicacion
3. Generando nuestra consulta:
select Publicacion.titulo from Periodicas
inner join Publicacion on
Publicacion.idPublicacion=Periodicas.Publicacion_idPublicacion;

SOLUCION DEL SEGUNDO EJERCICIO PROPUESTO:

Mostrar los autores con sus artculos y las revistas donde las publicaron.
1. Identificamos que es lo que nos pide el enunciado: autores con sus artculos y las
revistas donde las publicaron: Autor.nombre, Articulo. idArticulo,
Revistas.idRevista
2. Identificar camino a recorrer: autores con sus artculos y las revistas donde las
publicaron.
3. Como puedes observar en el enunciado podemos identificar 3 tablas: Autor,
Artculos y Revista; por lo que debes de buscar un camino que relacione esas
tablas:

Tu deseas sacar los autores de los artculos, recuerda que segn el enunciado un artculo
est dentro de una revista por lo que debes buscar la relacin general que te una la tabla
revista con la tabla autor (recuerda que si quieres ir de revista a autor, el camino es tipo
cangrejo, busca un camino que sea al contrario es decir de autor a revista):
Autor->Hecho->Articulo->contiene->Revista
4. Generando nuestra consulta:

select Autor.nombre ,Articulo.titulo,Revista.idRevista from Autor


//Iniciamos con Autor
inner join Hecho on //Unimos con la segunda table de nuestro camino
Hecho.Autor_idAutor=Autor.idAutor //Relacion entre ambas tablas
relacionadas anteriormente
inner join Articulo on //Relacionando la segunda tabla con la tercera que
pertenecen a nuestro camino

Articulo.idArticulo=Hecho.Articulo_idArticulo//Relacion entre las dos


nuevas tablas relacionadas

inner join Contiene on //Relacionando de nuevo las tablas de nuestro


camino
Contiene.Articulo_idArticulo=Articulo.idArticulo
inner join Revista on
Revista.idRevista=Contiene.Revista_idRevista;

S-ar putea să vă placă și