Salut,
Je galère avec une requète assez compliquée à faire en MySQL.
Il s'agit d'un site de réservation de camping. J'ai une table Emplacement qui contient tous les emplacements et une table Reservation qui contient ... les réservations
Dans la table réservation j'ai un champ "idEmplacement" qui contient l'id de l'emplacement réservé, un champ "debut" et "fin" qui contiennent les dates de début et de fin de la réservation (en temps unix).
Et pour que ce soit un peu plus marrant j'ai un deuxième champ "garage_mort" qui peut contenir un id d'emplacement également. Il s'agit en fait d'un deuxième emplacement qu'il est possible de réserver pour garer une voiture par ex.
Voila la requète que j'effectue pour cela :
SELECT Emplacement.idEmplacement
FROM Emplacement, Reservation
WHERE(
(Emplacement.idEmplacement = Reservation.idEmplacement
AND
(
Reservation.fin <= \''.$_SESSION['date_debut'].'\'
OR Reservation.debut >= \''.$_SESSION['date_fin'].'\'
))
OR
Emplacement.idEmplacement != Reservation.idEmplacement)
|
Je précise également qu'en mysql (dans les version 3 en tout cas) il n'est ni possible de faire des MINUS, ni des NOT IN ni d'ailleurs n'importe quelle requète imbriquée... ce serait trop facile sinon
Le résultat de la requète me donne beaucoup trop de résultats. Vous pouvez voir ici ce que ca donne : http://bougetoi.com/projet/site/reservation1.php
Il y a dans la base une réservation sur l'emplacement 1 sans garage mort et une autre sur le 2 avec un garage mort en 3.
Sinon la solution sera de le faire de plusieurs requète et de traiter ça en php mais bon ... c'est vraiment pas top.
Merci beaucoup d'avance pour votre aide
Message édité par albataur le 19-03-2005 à 17:17:58