2009-05-05 9 views
0

J'ai deux table pour mon formulaire de réservation de livre. Une table a le numéro de livre (1-10) et le statut; tout le statut est 'disponible' au début.Table de SQL Date Comparaison de champs

La deuxième table contient le nom du champ reserver et date (check-in, check-out) et les deux tables sont connectées avec une clé étrangère. Alors que table1 à table2 a une relation un-à-plusieurs; signifie 1 livre peut être réservé par de nombreux étudiants.

Problème:

Quand je reçois une demande de réserve pour book1 laisse suppose; alors le statut de ce livre1 devrait être changé en 'Oh Hold' pour cette date (sur la table1). Lorsque la deuxième demande vient pour le même livre1, sur la même plage de dates ou chevauche la date, elle doit indiquer un message, par ex. cette date est déjà réservée ou comme cela, de sorte que le deuxième demandeur ne peut pas réserver à la même date pour le même livre mais il peut demander un autre livre.

Comment puis-je vérifier la date de la table SQL existante à la date d'entrée actuelle?

Très apprécié votre réponse.

Merci,

Répondre

1

Fondamentalement, vous rechercheront ce modèles de date:

  • la première date ne peut pas être dans la plage réservée.
  • la dernière date ne peut pas être compris dans l'intervalle réservé
  • si la première date à moins de première date réservée, la dernière date ne peut pas être supérieure à la plage réservée à cette dernière date:

Quelque chose comme ceci trouvera les réservations actuelles:

SELECT * 
FROM reservations 
WHERE book = @bookId 
AND (
(@dat_ini BETWEEN begin_date AND end_date) 
OR (@dat_end BETWEEN begin_date AND end_date) 
OR (@dat_ini < begin_date AND @dat_end > end_date) 
) 
Questions connexes