Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/10/2012, 06:00
AzTia
 
Fecha de Ingreso: septiembre-2012
Mensajes: 3
Antigüedad: 12 años, 4 meses
Puntos: 0
Relacionar tablas

Buenas, es mi primer post y primero quisiera agradecer en general a todos los que escribís en esta web por que siempre encuentro algo que me sirve cuando voy desarrollando mis aplicaciones web.

Bueno entrando al problema que tengo es que necesito relacionar 3 tablas hasta ahí mas o menos me aclaro

El problema viene y aquí empiezo a explicar un poco la base de datos.

Es un software para el control de practicas que hace un alumno en un curso.

Tengo una tabla que define las practicas que tiene que hacer un alumno, es decir esta tabla almacena datos el id de la practica el nombre y los objetivos.

Otra tabla almacena si la practica se ha completado y esta aprobada por cada alumno, es decir almacena el id de la practica el id del alumno y 0 si esta aprobada y 1 si la ha suspendido.

y por ultimo la tercera es la tabla con los datos del alumno.

el problema me lo encuentro al relacionar la tabla 1 y 2 ya que si la 1 tabla fuera para un alumno solo no hay problema pq usando left join me daría NULL a las no realizadas y se acabo.

pero cuando hay algún alumno que ya ha realizado esa practica no da NULL y necesito obtener las practicas que salen como 0 o directamente no han sido creadas en la 2 tabla.

había pensado hacerlo usando NOT IN como condición WHERE y y así funciona pero el script a la que le metes alguna relación se vuelve excesivamente lento.

Alguno se le ocurre como hacerlo.

Código PHP:
SELECT 
   practica
.practica
FROM 
   practica
WHERE 
   idpractia NOT IN 
(
         
SELECT
              idpractica 
         FROM 
              practica_completadas 
         WHERE 
              completada 
and idstudent 514