SQL: consulta de múltiples tablas
Bueno, otra consulta que se ha planteado en el foro de www.gambas-es.org.
El problema es como almacenar y realizar consultas de los siguientes datos:
Tenemos varios profesores y varias materias de las que imparten clase. Se relacionan de la siguiente forma:
Pepe imparte las asignaturas de Matemáticas y Lengua
Luis imparte las asignaturas de Matemáticas y Contabilidad
Benito imparte la asignatura de Inglés
Sería un esquema como el que sigue:
Crearíamos un típico esquema de 3 tablas, donde la primera contiene los datos de los profesores, la segunda los datos de las materias y la tercera, la información entre las relaciones entre profesores-materias:
¿como podíamos realizar un consulta donde se muestre que asignatura que imparte el profesor "Luis"?
SELECT Nombre_Materia FROM Materias, Profesores,Relaciones WHERE Relaciones.idProfesor=Profesores.idProfesor and Relaciones.idMateria=Materias.idMateria and Nombre_Prof="Luis"
¿y si queremos que nos muestre todos los datos? Sustituimos "Nombre_Materia" por "*":
SELECT * FROM Materias, Profesores,Relaciones WHERE Relaciones.idProfesor=Profesores.idProfesor and Relaciones.idMateria=Materias.idMateria and Nombre_Prof="Luis"
¿como mostrar todas la relaciones, con los datos de los profesores y de las materias?:
SELECT * FROM Materia, Profesores, Relaciones WHERE Relaciones.idprofesor=Profesores.idProfesor and Relaciones.idmateria=materia.idmateriales
Nota:
Las sentencias no están optimizadas, se pueden mejorar usando JOIN. (vease enlaces de fuentes)
Saludos
Fuentes Para saber más:
http://oscarsotorrio.com/post/2010/09/11/Consultas-SQL-sobre-multiples-tablas.aspx