Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta SQL en Acces para fechas

Estas en el tema de Consulta SQL en Acces para fechas en el foro de Bases de Datos General en Foros del Web. Sigo con mis consultas sobre la BBDD que estoy haciendo para prestamos de portátiles y proyectores. Tengo como tablas Cita: Proyectores --> Guarda todos los ...
  #1 (permalink)  
Antiguo 13/02/2007, 14:01
 
Fecha de Ingreso: febrero-2007
Mensajes: 13
Antigüedad: 17 años, 2 meses
Puntos: 0
Consulta SQL en Acces para fechas

Sigo con mis consultas sobre la BBDD que estoy haciendo para prestamos de portátiles y proyectores.

Tengo como tablas

Cita:
Proyectores --> Guarda todos los datos de los proyectores que tenemos
Portátiles --> Guarda todos los datos de los portátiles que tenemos
Gestores --> Las personas que podemos realizar los préstamos
Prestamos --> Guarda todos los datos de un préstamos (Fecha de entrega, Fecha de devolución, Id_Portátil, Id_Proyector, Id_Prestamo....)
Bien, cuando realizamos una cesión de un portátil o proyector en la tabla Portátiles o Proyectores se le marca el estado Prestado, y mientras tenga futuras reservas sigue estando marcada esa opción. En el momento que deja de tener reservas ese portátil o proyector esa casilla se desmarca y pasa a estar disponible para cualquier fecha.

Sin embargo mientras tiene marcada esa opción, hay posibilidades de poder prestar esos portátiles o proyectores entre las fechas que quedan libres entre un prestamo y el siguiente.

Bien, yo tengo 3 consultas para poder determinar si entre la fecha de entrega y devolución en la que me piden un préstamo, hay algun portátil o proyector disponible. Pongo un ejemplo...


Portátil 1 --> Se lo llevó el día 10 de Enero del 2007, lo devuelve el 20 febrero de 2007

Portátil 1 --> Tiene otro prestamo para el dia 1 de Marzo del 2007 hasta el 20 de Marzo del 2007.


Bien ese portátil queda libre del 21 al 28 de febrero, asi que si alguien me pidiera una cesión entre esas fechas debería aparecerme como disponible.

Os pongo las consultas tal y como las tengo para conseguir esto, imagino que habrá alguna manera de hacerlo más sencillo por eso pregunto....



1ª Consulta (Entrefechas1)

Cita:
SELECT DISTINCT Id_Portatiles

FROM Prestamos INNER JOIN Portatiles ON Prestamos.Id_Portatiles=Portatiles.Id_Portatil

WHERE ((formularios!FPrestamos!fecha_entrega Not Between Prestamos.fecha_entrega And Prestamos.fecha_devolucion)

And

(formularios!FPrestamos!fecha_devolucion Not Between Prestamos.fecha_entrega And Prestamos.fecha_devolucion))

And Id_Portatiles<>0 And Portatiles.Reservado=-1;
Cita:
En un formulario pongo la fecha de entrega y devolución que me piden, miro que la fecha de entrega no esté comprendida entre la de entrega y devolución de los préstamos que ya existen, Y lo mismo para la fecha de devolución.

2ª Consulta (Entrefechas2)

Cita:
SELECT DISTINCT Id_Portatiles

FROM Prestamos INNER JOIN Portatiles ON Prestamos.Id_Portatiles=Portatiles.Id_Portatil

WHERE (((formularios!FPrestamos!fecha_entrega Between Prestamos.fecha_entrega And Prestamos.fecha_devolucion) Or (formularios!FPrestamos!fecha_devolucion Between Prestamos.fecha_entrega And Prestamos.fecha_devolucion))

Or

((formularios!FPrestamos!fecha_entrega Between Prestamos.fecha_entrega And Prestamos.fecha_devolucion) And (formularios!FPrestamos!fecha_devolucion>Prestamos .fecha_devolucion))

Or

((formularios!Fprestamos!fecha_devolucion Between Prestamos.fecha_entrega AND Prestamos.fecha_devolucion) And (formularios!FPrestamos!fecha_entrega<Prestamos.fe cha_devolucion))

Or

((formularios!FPrestamos!fecha_entrega<Prestamos.f echa_entrega AND formularios!Fprestamos!fecha_devolucion>Prestamos. fecha_devolucion)))

And Id_Portatiles<>0 AND Portatiles.Reservado=-1;
Cita:
En un formulario pongo la fecha de entrega y devolución que me piden, miro todos los prestamos en los que la fecha de entrega que me han pedido está comprendida entre la entrega y devolución de los préstamos existentes O la fecha de devolución que me han dado esté comprendida entre las fechas de los préstamos.

También mira los casos en los que la fecha de entrega que me piden esté comprendida entre los prestamos que ya existen Y la fecha de devolución que me piden es mayor a las fecha de devolución de los préstamos que existen

También mira los casos en los que la fecha de devolución que me piden esté comprendida entre los prestamos que ya existen Y la fecha de entrega sea inferior a la fecha de devolución de los préstamos que ya existen

También mira que la fecha de entrega que me piden que sea inferior a las fechas de entrega de los préstamos que ya existen Y la fecha de devolución es mayor que las devoluciones de los préstamos que ya existen

3ª Consulta (Portatiles_Disponibles3)

Cita:
SELECT *

FROM Entrefechas1

WHERE Entrefechas1.Id_Portatiles NOT IN(SELECT Entrefechas2.Id_Portatiles FROM Entrefechas2);
Cita:
Esta última coge los portátiles que no tengan préstamos en las fechas que piden.
Espero haberme explicado, si véis que tengo que corregir algo os lo agradecería. Me duele ya la cabeza de pensar en todas las posibilidades y ya no sé si alguna de las que he puesto es innecesaria o me falta cubrir algún caso.

Cualquier cosa que me podáis decir os lo agradeceré.

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.