IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Problème de tranche horaire.


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 94
    Points : 65
    Points
    65
    Par défaut Problème de tranche horaire.
    Bonjour,

    je souhaiterais afficher les véhicules dispos qui ne sont pas présents dans les tranches horaires qui se trouvent dans ma table reservation.
    Exemple :
    id_vehicule1
    heure_depart_resa : 06:00:00
    heure_arrivee_resa : 11:00:00

    id_vehicule1
    heure_depart_resa : 16:00:00
    heure_arrivee_resa : 19:00:00


    Si lors de la réservation, on choisit comme plage horaire : 13:00:00 15:00:00, le véhicule doit s'afficher, par contre si je choisie 07:00:00 10:00:00 ou encore 17:00:00 18:00:00 le véhicule id1 ne doit pas s'afficher.

    J'ai tenté cela avec de l'aide de TheLeadingEdge:

    SELECT libelle_vehicule
    FROM vehicule
    WHERE id_vehicule NOT
    IN (

    SELECT id_vehicule
    FROM reservation
    WHERE heure_depart_resa
    BETWEEN '06:00:00'
    AND '11:00:00'
    OR (
    heure_arrivee_resa
    BETWEEN '06:00:00'
    AND '11:00:00'
    )
    OR (
    heure_depart_resa < '06:00:00'
    AND heure_arrivee_resa > '11:00:00'
    )
    )


    Mais cela fonctionne uniquement si l'heure de départ est = à l'heure de départ choisie, exemple 06:00:00 11:00:00. Si je mets par exemple 07:00:00 11:00:00, le véhicule s'affiche alors qu'il ne devrait pas, pareil si je choisie 16:00:00 19:00:00, alors que ce créneau est pris..

    Auriez vous une idée ?
    Meric beaucoup....

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    Les bornes du BETWEEN sont comprises dans l'intervalle, donc normalement ça devrait être bon.
    J'ai essayé avec les données que tu donnes et ta rq et pour moi c'est ok.
    J'ai aussi fait 1 essai avec des heures pas tout à fait 'pleines' au cas ou ... Mais c'est ok qd même, la troisième restriction couvrant ce cas là. Peux tu envoyer 1 select du contenu de tes tables ? parce que là je séche !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    mysql> SELECT   *
        -> FROM     reservation;
    +-------------+-------------------+--------------------+
    | id_vehicule | heure_depart_resa | heure_arrivee_resa |
    +-------------+-------------------+--------------------+
    |           1 | 06:00:00          | 11:00:00           |
    |           1 | 16:00:00          | 19:00:00           |
    |           2 | 06:00:01          | 11:00:01           |
    |           2 | 16:00:01          | 19:00:01           |
    +-------------+-------------------+--------------------+
    4 rows in set (0.00 sec)
     
    mysql>
    mysql> SELECT   id_vehicule
        -> FROM     vehicule
        -> WHERE    id_vehicule NOT IN
        -> (
        -> SELECT   id_vehicule
        -> FROM     reservation
        -> WHERE    heure_depart_resa BETWEEN '07:00:00' AND '11:00:00'
        -> OR       (heure_arrivee_resa BETWEEN '07:00:00' AND '11:00:00')
        -> OR       (heure_depart_resa < '07:00:00' AND heure_arrivee_resa > '11:00:00')
        -> );
    Empty set (0.00 sec)
     
    mysql>

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 94
    Points : 65
    Points
    65
    Par défaut Ok c'est bon avec TIME...merci beaucoup TheLeadingEdge
    Citation Envoyé par TheLeadingEdge
    Re,

    Les bornes du BETWEEN sont comprises dans l'intervalle, donc normalement ça devrait être bon.
    J'ai essayé avec les données que tu donnes et ta rq et pour moi c'est ok.
    J'ai aussi fait 1 essai avec des heures pas tout à fait 'pleines' au cas ou ... Mais c'est ok qd même, la troisième restriction couvrant ce cas là. Peux tu envoyer 1 select du contenu de tes tables ? parce que là je séche !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    mysql> SELECT   *
        -> FROM     reservation;
    +-------------+-------------------+--------------------+
    | id_vehicule | heure_depart_resa | heure_arrivee_resa |
    +-------------+-------------------+--------------------+
    |           1 | 06:00:00          | 11:00:00           |
    |           1 | 16:00:00          | 19:00:00           |
    |           2 | 06:00:01          | 11:00:01           |
    |           2 | 16:00:01          | 19:00:01           |
    +-------------+-------------------+--------------------+
    4 rows in set (0.00 sec)
     
    mysql>
    mysql> SELECT   id_vehicule
        -> FROM     vehicule
        -> WHERE    id_vehicule NOT IN
        -> (
        -> SELECT   id_vehicule
        -> FROM     reservation
        -> WHERE    heure_depart_resa BETWEEN '07:00:00' AND '11:00:00'
        -> OR       (heure_arrivee_resa BETWEEN '07:00:00' AND '11:00:00')
        -> OR       (heure_depart_resa < '07:00:00' AND heure_arrivee_resa > '11:00:00')
        -> );
    Empty set (0.00 sec)
     
    mysql>

    Cela fonctionne , c'est parcreque comme un imbécile que je suis, j'avais oublié de mettre TIME(heure_depart_resa) alors que ma collonne est de type DATETIME et c'est pour cela...
    Voilà donc ma requête définitive qui fonctionne (alllelllouuyyaaaa) :

    SELECT libelle_vehicule
    FROM vehicule
    WHERE id_vehicule NOT
    IN (

    SELECT id_vehicule
    FROM reservation
    WHERE TIME( heure_depart_resa )
    BETWEEN '12:00:00'
    AND '17:00:00'
    OR (
    TIME( heure_arrivee_resa )
    BETWEEN '12:00:00'
    AND '17:00:00'
    )
    OR (
    TIME( heure_depart_resa ) < '12:00:00'
    AND TIME( heure_arrivee_resa ) > '17:00:00'
    )
    )


    Merci beaucoup, beaucoup...ton aide a été plus que précieuse, et me sauve d'une prise de tête qui dure depuis une semaine....
    c'est le problème de bosser en Freelance...

  4. #4
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Avec plaisir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/06/2014, 13h25
  2. Problème tranche horaire
    Par Johan47 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/05/2013, 14h45
  3. [Vxi3] Problème pour créer des tranches horaires
    Par Laure94 dans le forum Designer
    Réponses: 2
    Dernier message: 11/07/2011, 18h15
  4. Récupérer des enregistrements par tranche horaire
    Par olive_le_malin dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 19/05/2006, 16h53
  5. Calcul de tranches horaires
    Par zach dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 02/08/2005, 08h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo