Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



martes, 5 de agosto de 2014

SQL: consulta de multiples tablas.

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