OVH Cloud OVH Cloud

Problème EXCEPT > MySQL

3 réponses
Avatar
Vincent JANSSEN
Bonjour,

J'aimerais bien savoir comment réaliser cette requête avec MySQL ;

$sql= "SELECT id BETWEEN '$departure' and '$arrival' FROM book EXCEPT SELECT
id FROM book WHERE departure = '$arrival' AND arrival = '$departure'";

J'ai essayé pleins de choses pour finir j'ai aperçu que l'opérateur EXCEPT
n'existait pas avec MySQL.

Serait-il possible de recevoir un coup de main?

D'avance je vous remercie,

Vincent JANSSEN

3 réponses

Avatar
Vincent JANSSEN
Merci pour votre réponse mais...
Cela ne fonctionne toujours pas...

Il va falloir que je fasse un autre système...
Mais lequel ?

Bonne journée,

Vincent

"Rue des Prairies" a écrit dans le message de
news:bkv85u$3fv$
Vincent JANSSEN wrote:
> Merci pour votre réponse,
>
> mais seulement ca ne fonctionne tjr pas...
>
> Ca m'ennuie enfin...
>
> Va falloir que je continue à chercher...
>
> BàV
>
> Vincent
> "Rue des Prairies" a écrit dans le message de
> news:bkrpap$733$
>
>>Vincent JANSSEN wrote:
>>
>>
>>>Bonjour,
>>>
>>>J'aimerais bien savoir comment réaliser cette requête avec MySQL ;
>>>
>>>$sql= "SELECT id BETWEEN '$departure' and '$arrival' FROM book EXCEPT
>
> SELECT
>
>>>id FROM book WHERE departure = '$arrival' AND arrival = '$departure'";
>>>
>>>J'ai essayé pleins de choses pour finir j'ai aperçu que l'opérateur
>
> EXCEPT
>
>>>n'existait pas avec MySQL.
>>>
>>>Serait-il possible de recevoir un coup de main?
>>>
>>>D'avance je vous remercie,
>>>
>>>Vincent JANSSEN
>>>
>>>
>>>
>>
>>Bonjour,
>>
>>Essaie ceci :
>>
>>SELECT id FROM book WHERE id BETWEEN '$departure' AND '$arrival' AND
>>departure <> '$arrival' AND arrival <> '$departure'
>>
>>Olivier.
>>
>
>
>
Bonsoir,

C'est plutôt :

SELECT id FROM book WHERE id BETWEEN '$departure' AND '$arrival' AND
(departure <> '$arrival' OR arrival <> '$departure')


Olivier.

Avatar
Vincent JANSSEN
Je réexplique mon problème :

J'ai une table avec des réservations,
Les champs sont : id, date arrivée et date départ.

Lorsque des personnes souhaitent réserver je fais une requête pour voir si :

- Les dates arrivées et départ sont identiques à celles contenues dans la bd
donc : '$arrival' = arrival and '$departure' = departure;
- Voir si les dates encodées ne chevauchent pas les dates de la bd donc :
'$arrival' < arrival and '$departure' > departure;.
- Voir si les dates encodées ne sont pas entre les dates de la db donc :
'$arrival' > arrival and '$departure' < departure;.

Dans tous ces cas la, je dois refuser la réservation.

A mon avis j'ai oublié des cas, mais en gros ca doit être ca.

Par contre les réservations peuvent être effectuées ainsi :
réservation du 26-09-2003 au 28-09-2003
réservation du 28-09-2003 au 30-09-2003 ... etc...

Aidez-moi svp...

Merci

Vincent


"Vincent JANSSEN" a écrit dans le message de
news:3f73eb9c$0$24184$
Merci pour votre réponse mais...
Cela ne fonctionne toujours pas...

Il va falloir que je fasse un autre système...
Mais lequel ?

Bonne journée,

Vincent

"Rue des Prairies" a écrit dans le message de
news:bkv85u$3fv$
> Vincent JANSSEN wrote:
> > Merci pour votre réponse,
> >
> > mais seulement ca ne fonctionne tjr pas...
> >
> > Ca m'ennuie enfin...
> >
> > Va falloir que je continue à chercher...
> >
> > BàV
> >
> > Vincent
> > "Rue des Prairies" a écrit dans le message de
> > news:bkrpap$733$
> >
> >>Vincent JANSSEN wrote:
> >>
> >>
> >>>Bonjour,
> >>>
> >>>J'aimerais bien savoir comment réaliser cette requête avec MySQL ;
> >>>
> >>>$sql= "SELECT id BETWEEN '$departure' and '$arrival' FROM book EXCEPT
> >
> > SELECT
> >
> >>>id FROM book WHERE departure = '$arrival' AND arrival '$departure'";
> >>>
> >>>J'ai essayé pleins de choses pour finir j'ai aperçu que l'opérateur
> >
> > EXCEPT
> >
> >>>n'existait pas avec MySQL.
> >>>
> >>>Serait-il possible de recevoir un coup de main?
> >>>
> >>>D'avance je vous remercie,
> >>>
> >>>Vincent JANSSEN
> >>>
> >>>
> >>>
> >>
> >>Bonjour,
> >>
> >>Essaie ceci :
> >>
> >>SELECT id FROM book WHERE id BETWEEN '$departure' AND '$arrival' AND
> >>departure <> '$arrival' AND arrival <> '$departure'
> >>
> >>Olivier.
> >>
> >
> >
> >
> Bonsoir,
>
> C'est plutôt :
>
> SELECT id FROM book WHERE id BETWEEN '$departure' AND '$arrival' AND
> (departure <> '$arrival' OR arrival <> '$departure')
>
>
> Olivier.
>


Avatar
Rue des Prairies
Vincent JANSSEN wrote:
Je réexplique mon problème :

J'ai une table avec des réservations,
Les champs sont : id, date arrivée et date départ.

Lorsque des personnes souhaitent réserver je fais une requête pour voir si :

- Les dates arrivées et départ sont identiques à celles contenues dans la bd
donc : '$arrival' = arrival and '$departure' = departure;
- Voir si les dates encodées ne chevauchent pas les dates de la bd donc :
'$arrival' < arrival and '$departure' > departure;.
- Voir si les dates encodées ne sont pas entre les dates de la db donc :
'$arrival' > arrival and '$departure' < departure;.

Dans tous ces cas la, je dois refuser la réservation.

A mon avis j'ai oublié des cas, mais en gros ca doit être ca.

Par contre les réservations peuvent être effectuées ainsi :
réservation du 26-09-2003 au 28-09-2003
réservation du 28-09-2003 au 30-09-2003 ... etc...

Aidez-moi svp...

Merci

Vincent



Bonsoir,

Si j'ai bien compris, tu veux que $arrival et $departure ne soient pas
dans un intervalle de dates déjà réservé ?

WHERE ('$arrival' BETWEEN arrival AND departure)
OR ('$departure BETWEEN arrival AND departure)

si tu trouves quelque chose, tes dates $arr ou $dep sont dans un
intervalle déjà réservé.

Olivier.