Dano escribió:
Cuando necesitamos combinar registros de dos o más tablas, lo ideal es utilizar un JOIN, ya que en eficiencia es lo mejor. Además la clausula WHERE, generalmente es un condicional selector, no un criterio para combinar tablas. A lo mejor este query te sirve:
Código :
SELECT cursos.*, zona.ciudad, zona.ubicacion
FROM relCursoZona LEFT JOIN cursos
ON relCursoZona.id = cursos.idCurso
LEFT JOIN zona
ON zona.id=relCursoZona.idZona
ORDER BY relCursoZona.id
si añadimos una tabla más, por ejemplo alumno, tendremos:
lo anterior:
----------------
cursos (id, titulo, descripction.... otros campos)
zona(id, ciudad, ubicacion)
relCursoZona(id, idCurso, idZona).
más 2 tablas(pq es una relacion n:m al igual que la anterior):
-------------------------------------------------------------------
alumno(id,nombre,apellidos,...)
relCursoAlumno(id, idCurso, idAlumno)
Los alumnos pueden inscribirse a más de un curso y logicamente en un curso puede haber varios alumnos.
Entonces sin necesitamos saber los alumnos que estan inscrito en esos cursos, habría que:
1) realizarlo en la misma consulta (1 consulta en total)
2) realizar otra consulta identica a la anterior (es decir dos consultas en total)
que es más productivo para una aplicación en PHP? es decir con cual gano más velocidad.
en el caso de que fuese una solo consulta, ¿como sería la consulta en SQL?
En un modelo E-R bien definido y sin redundancias, muchas veces tenemos un sistema complejo donde una misma tabla se relaciona con muchas tablas. Y necesitamos sacar todos sus datos relacionados para mostrarlos en una pagina web.
un saludo y gracias.