Ver Mensaje Individual
  #11 (permalink)  
Antiguo 16/07/2010, 15:57
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: Ayuda con Consulta MYSQL

Esto es mas o menos lo que tienes:

Tiene dos problemas:
1) No se sabe de dónde surge cod_mat ni lo que representa.
2) Para hacer un JOIN entre pensa y notas hay que usar una función de caracteres para extraer la PK de pensa, ya que tal y como está es inconsistente.
Ese tipo de cosas no se debe hacer. En todo caso si se requiere que además de ese código, contenga la relación con el sitio (sección) donde se puso esa nota, hay que extender el modelo:

Con este modelo ya podemos crear una consulta consistente:

Código MySQL:
Ver original
  1.     P.cod_mat, M.descrip, S.semestre, M.creditos, N.nota, N.lapso, N.tiplap
  2. FROM pensa P
  3.     INNER JOIN materia M ON P.cod_comp = M.cod_comp
  4.     LEFT JOIN notas N ON N.cod_pensa = P.cod_pensa
  5.     INNER JOIN seccion S ON N.seccion_id = S.seccion_id;
Ahora bien, yo a esto le veo un problema: çLas notas son propiedad o pertenecen al cursante, no al plan o programa de cursada (que es lo que parece representar pensa), por lo que esta consulta generaría una repetición de registros por cada nota.
SI lo que quieres es poner las materias dadas en un semestre, esta consulta no requiere cruzar la tabla de notas, como no sea para saber la sección a la que pertenece esa cursada.

Eso sería:
Código MySQL:
Ver original
  1.     P.cod_pensa, S.seccion_id, P.cod_mat, M.descrip, S.semestre, M.creditos, N.lapso, N.tiplap
  2. FROM pensa P
  3.     INNER JOIN materia M ON P.cod_comp = M.cod_comp
  4.     LEFT JOIN notas N ON N.cod_pensa = P.cod_pensa
  5.     INNER JOIN seccion S ON N.seccion_id = S.seccion_id;



Nota importante:
Cita:
pero yo a mi forma de ver las cosas se debe relacionar las tablas con el campo cod_comp, que para las 3 tablas son iguales
Las relaciones no se establecen entre las entidades porque parezcan estar relacionadas, sino porque realmente exista una relación.
¿Modelaste con alguna herramienta gráfica antes de construir las tablas?, si es así, postea lo que hiciste para ver bien esas relaciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)