Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/07/2013, 18:04
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Group by SUBCONSULTA

Bueno, el problema es que necesitas leer con atención el uso de INNER JOIN, algo sobre consistencia e integridad referencia,y en especial bastante sobre consultas en general...
Por empezar, tienes datos inconsistentes en una tabla, porque no existe un horario de ID en cero, por lo que un registro de la tabla relacional no debería existir.
La consulta base que quieres sería mas o menos así:
Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->     e.nombre,
  3.     ->     e.expediente,
  4.     ->     e.correo_electronico,
  5.     ->     h.turno,
  6.     ->     l.nombre
  7.     -> FROM estudiante e
  8.     ->     INNER JOIN estudiante_laboratio_horario elh ON e.idestudiante = elh.idestudiante
  9.     ->     INNER JOIN horario H ON elh.idhorario = h.idhorario
  10.     ->     INNER JOIN laboratorio L ON elh.idlaboratorio = L.idlaboratorio
  11.     -> WHERE elh.idlaboratorio IN (1,2,5)
  12.     -> ORDER BY l.nombre;
  13. +-------------------+------------+----------------------+--------+---------------------+
  14. | nombre            | expediente | correo_electronico   | turno  | nombre              |
  15. +-------------------+------------+----------------------+--------+---------------------+
  16. | Jhonnathan Valera | 27958      | [email protected]   | Noche  | Misi¾n Sucre        |
  17. | Marco Serradas    | 27952      | [email protected] | Tarde  | Misi¾n Sucre        |
  18. | Leonardo Padilla  | 26644      | [email protected] | Ma±ana | Moises Sanchez Leal |
  19. | Gleycer Parra     | 26633      | [email protected]   | Ma±ana | Moises Sanchez Leal |
  20. +-------------------+------------+----------------------+--------+---------------------+
  21. 4 rows in set (0.00 sec)
Esto muestra que tienes un problema posible de collation:
Código MySQL:
Ver original
  1. mysql> SELECT *
  2.     -> FROM laboratorio;
  3. +---------------+-----------+---------------------+------------------+
  4. | idlaboratorio | ubicaci¾n | nombre              | cantidad_equipos |
  5. +---------------+-----------+---------------------+------------------+
  6. |             1 | Aula C7   | Alma Mater          | 15               |
  7. |             2 | Aula A04  | Moises Sanchez Leal | 18               |
  8. |             3 | Aula A03  | OPSU                | 15               |
  9. |             4 | Aula A12  | Redes               | 18               |
  10. |             5 | Aula B1   | Misi¾n Sucre        | 20               |
  11. +---------------+-----------+---------------------+------------------+
  12. 5 rows in set (0.00 sec)
Acá puedes ver que no existe un horario con ID en cero:

Código MySQL:
Ver original
  1. mysql> SELECT *
  2.     -> FROM HORARIO;
  3. +-----------+--------+
  4. | idhorario | turno  |
  5. +-----------+--------+
  6. |         1 | Ma±ana |
  7. |         2 | Tarde  |
  8. |         3 | Noche  |
  9. +-----------+--------+
  10. 3 rows in set (0.00 sec)
Los estudiantes:
Código MySQL:
Ver original
  1. mysql> SELECT *
  2.     -> FROM ESTUDIANTE;
  3. +--------------+---------+------------+----------------------+-------------------+
  4. | idestudiante | nrobeca | expediente | correo_electronico   | nombre            |
  5. +--------------+---------+------------+----------------------+-------------------+
  6. |            1 |       1 | 26633      | [email protected]   | Gleycer Parra     |
  7. |            2 |       1 | 26644      | [email protected] | Leonardo Padilla  |
  8. |            3 |       2 | 27952      | [email protected] | Marco Serradas    |
  9. |            4 |       1 | 27958      | [email protected]   | Jhonnathan Valera |
  10. |            5 |       2 | 29888      | [email protected]    | Kenderbeth L¾pez  |
  11. +--------------+---------+------------+----------------------+-------------------+
  12. 5 rows in set (0.00 sec)
Y la tabla relacional, con el último registro con una inconsistencia evidente:
Código MySQL:
Ver original
  1. mysql> SELECT *
  2.     -> FROM estudiante_laboratio_horario;
  3. +---------------+-----------+--------------+-----------------+
  4. | idlaboratorio | idhorario | idestudiante | lapso_acadÚmico |
  5. +---------------+-----------+--------------+-----------------+
  6. |             2 |         1 |            1 | 1               |
  7. |             2 |         1 |            2 | 1               |
  8. |             5 |         2 |            3 | 1               |
  9. |             5 |         3 |            4 | 1               |
  10. |             1 |         0 |            5 | 1               |
  11. +---------------+-----------+--------------+-----------------+
  12. 5 rows in set (0.00 sec)

Un detalle: Si vas a usar alfabeto en castellano, usa collation utf8_general_ci. de lo contrario te dará problemas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)