Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/08/2009, 12:47
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: Pregunta simple

Esto te devolvería la lista de videos alquilados entre las fechas ingresadas, y sólo los qmue se alquilaron:
Código sql:
Ver original
  1. SELECT
  2.   `idVideo`,
  3.   `Nombre`
  4. FROM `Video` INNER JOIN `Renta` USING(`idVideo`)
  5. WHERE
  6.   (`Fecha_Inicio`BETWEEN Inicio AND Fin);

Una solución así, devolvería sólo los que no se alquilaron:
Código sql:
Ver original
  1. SELECT
  2.   v.`idVideo`,
  3.   v.`Nombre`
  4. FROM `Video` V LEFT JOIN `Renta` R USING(`idVideo`)
  5. WHERE
  6.   (`Fecha_Inicio`BETWEEN Inicio AND Fin) AND `IdVideo` IS NULL;

Esto devolverá sólo los que se alquilaron y devolvieron entre esas fechas:
Código sql:
Ver original
  1. SELECT
  2.   `idVideo`,
  3.   `Nombre`
  4. FROM `Video` INNER JOIN `Renta` USING(`idVideo`)
  5. WHERE
  6.   (`Fecha_Inicio`BETWEEN Inicio AND Fin) AND
  7.   (`Fecha_fIN`BETWEEN Inicio AND Fin);

Tu dirás exactamente qué es lo que quieres obtener.

Como tip, recuerda que el WHERE no es optimizable por el parser de MySQL, por lo que es mejor resolver estas consultas por medio de JOINs.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)