Hola de nuevo luis_h_1:
Cita:
Iniciado por luis_h_1
Gracias por la ayuda, no utilicé el LEFT JOIN porque aún no me queda muy claro como es que funciona, incluyendo el RIGHT JOIN, he leído algunos tutoriales, pero no me queda claro, seguiré buscando más...
Como he habrás dado cuenta, los JOIN's te sirven para unir dos tablas relacionadas por uno o más campos, la cardinalidad del INNER JOIN es 1 a n, es decir un registro de la tabla A DEBE TENER AL MENOS UN REGISTRO EN LA TABLA B, si no existe este registro entonces NO SE MUESTRA en el resultado final. EL LEFT JOIN tiene una cardinalidad de 1 a 0 o más, es decir, TODOS LOS REGISTROS DE LA TABLA A se muestran, si existen registros en la tabla B que estén relacionados también se muestran, pero SI NO EXISTEN REGISTROS ENTONCES LOS CAMPOS SE PONEN COMO NULL, el RIGHT JOIN es semejante, pero cambia el orden de las tablas, es decir, los SE MUESTRAN TODOS LOS REGISTROS DE LA TABLA B, y solo los registros de la tabla A que se relacionen. Checa este script:
Código MySQL:
Ver original+------------+----------------+
| id_materia | nombre_materia |
+------------+----------------+
| 1 | matemáticas |
| 2 | biología |
| 3 | programación |
| 4 | química |
+------------+----------------+
+------------+-------------+
| id_materia | id_profesor |
+------------+-------------+
| 1 | 1 |
| 2 | 1 |
+------------+-------------+
-> ON MP.id_materia
= M.id_materia
AND MP.id_profesor
= 1; +------------+----------------+------------+-------------+
| id_materia | nombre_materia | id_materia | id_profesor |
+------------+----------------+------------+-------------+
| 1 | matemáticas | 1 | 1 |
| 2 | biología | 2 | 1 |
+------------+----------------+------------+-------------+
Observa que los id 3 y 4 de la tabla A (materia) NO EXISTEN EN LA TABLA B (materia_profesor), por lo tanto los campos id_materia y id_profesor que corresponden a esta tabla se muestran como NULL para estos registros.
checa ahora el uso del INNER JOIN:
Código MySQL:
Ver original -> ON MP.id_materia
= M.id_materia
AND MP.id_profesor
= 1; +------------+----------------+------------+-------------+
| id_materia | nombre_materia | id_materia | id_profesor |
+------------+----------------+------------+-------------+
| 1 | matemáticas | 1 | 1 |
| 2 | biología | 2 | 1 |
+------------+----------------+------------+-------------+
Observa ahora que como los id 3 y 4 de la tabla A NO EXISTEN EN LA TABLA B entonces NO SE MUESTRAN EN EL RESULTADO FINAL
Checa también lo que nos dice WIKIPEDIA acerca de los JOIN's
http://es.wikipedia.org/wiki/Join
En lo particular creo que es bastante clara la explicación que da acerca de cómo se comportan cada uno de los JOIN's. Espero que con esto te quede un poco más claro el funcionamiento de los JOIN's, pues te aseguro que te servirán muchísimo al momento de desarrollar tus consultas.
Saludos
Leo.