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

Langage SQL Discussion :

ecriture d'une requete affichage..


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de arti2004
    Inscrit en
    Février 2004
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 253
    Points : 53
    Points
    53
    Par défaut ecriture d'une requete affichage..
    bonjour
    voila j'ai un probleme pour ecrire une requete pour un probleme de reservation dans un hotel.
    J’ai une table qui contient les numero des chambres.
    TABLE_CHAMBRE (numchambre,…)
    J’ai la table reservation qui contient le numero de chambre , date d’arrivee , date de depart
    TABLE _RESERVATION(id,numchambre, Date_entree, Date_sortie)

    J’ai un fomrulaire de recherche de reservation entre date1 et date2


    Je cherche a ecrire la requete qui m’affiche les numero de chambre libres dans l’intervalle de recherche (saisi)
    voila ce que j'ai ecrit mais ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Select numchambre
    From TABLE_CHAMBRE 
    Where numchambre not in (
     
    Select numchambre 
    From TABLE _RESERVATION
    Where 
    Date_entree =d1
    And
    Date_sortie =d2
     
    )
    qq1 peut il m'aider . merci

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 218
    Points : 28 169
    Points
    28 169
    Par défaut
    TU as plusieurs cas à prendre en compte pour exclure tes chambres. Les cas sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
               d1         d2
    --------|---------|--------
    ----###|###----|--------
    ----###|######|####----
    --------|----###|#####---
    --------|-####--|--------
     
    # = réservé
    si tu analyse bien, tous ces cas se résument en l'équation (DateEntrée < d2 et DateSortie > d1)

    Donc ta requette devra s'écrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select numchambre
    From TABLE_CHAMBRE
    Where numchambre not in (
        Select numchambre
        From TABLE _RESERVATION
        Where
           (Date_entree < d2)
        And
           (Date_sortie > d1)
    )

  3. #3
    Membre du Club Avatar de arti2004
    Inscrit en
    Février 2004
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 253
    Points : 53
    Points
    53
    Par défaut
    ça marche pas cette requete!

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 218
    Points : 28 169
    Points
    28 169
    Par défaut
    c'est quoi qui marche pas ? le message d'erreur ?

  5. #5
    Membre du Club Avatar de arti2004
    Inscrit en
    Février 2004
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 253
    Points : 53
    Points
    53
    Par défaut
    eh ben en faisant un simple exemple ça me donne un resultat faux

    je prends la chmabre numero 1 reservé du 01/04/2009 au 10/04/2009
    et la chambre numero 2 reservé du 01/04/2009 au 05/04/2009
    et je cherche quelles sont les chmabres libres du 06/04/2009
    ça me donne 2 , et qui est faux normalement une seul libre numero 2

    merci

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Ca vous donne 2... c'est le bon résultat puisque votre chambre 2 est libre le 6.

    Si ça vous donne les deux résultats c'est autre chose mais comme vous n'être pas très précis...

  7. #7
    Membre du Club Avatar de arti2004
    Inscrit en
    Février 2004
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 253
    Points : 53
    Points
    53
    Par défaut
    ça me donne deux resulats la chambre 1 et la chambre 2. normalement uniquement la chambre 2

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Vous pouvez faire une copier-coller de votre requête et de votre résultat ?
    Car la requête de sevyc64 est correcte.

  9. #9
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 218
    Points : 28 169
    Points
    28 169
    Par défaut
    Il est évident que pour tester le 06/04/2009, il faudra renseigner le 06/04/2009 à la place de d1 ET de d2

    Le résultat renvoyé sera bien 1 seule ligne contenant 2 comme le numéro de la chambre 2 effectivement libre à cette date-là

  10. #10
    Membre du Club Avatar de arti2004
    Inscrit en
    Février 2004
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 253
    Points : 53
    Points
    53
    Par défaut
    j'ai fais la mme requete et directement dans mysql et ça donne deux chambres

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Je reessaye en gras :
    Vous pouvez faire une copier-coller de votre requête et de votre résultat ?
    Car la requête de sevyc64 est correcte.

  12. #12
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Je subodore un pb de codification de vos dates ...
    Comme le demande Waldar, un jeu de test ainsi que la requete EXACTE que vous essayer pourrait aider tout le monde ...

    Bon courage

  13. #13
    Membre du Club Avatar de arti2004
    Inscrit en
    Février 2004
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 253
    Points : 53
    Points
    53
    Par défaut
    je fais la meme requete et avec date 1 : 06/04/2009
    et date 2 : 10/04/2009
    et ça marche pas..

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Si vous n'avez pas de table de date comme je l'ai indiqué dans cet article :
    http://sqlpro.developpez.com/cours/gestiontemps/

    Alors il vous faut faire une requête récursive à l'aide d'une CTE pour générer dynamiquement toutes les jours entre vos deux dates.

    La solution à l'aide de la table des dates étant le plus efficace.

    A +

  15. #15
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 218
    Points : 28 169
    Points
    28 169
    Par défaut
    C'est bien cette requette que tu exécute ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT numchambre
    FROM TABLE_CHAMBRE
    WHERE numchambre NOT IN (
        SELECT numchambre
        FROM TABLE_RESERVATION
        WHERE
           (Date_entree < '2009-04-06')
        AND
           (Date_sortie > '2009-04-06')
    )

Discussions similaires

  1. [AC-2002] Probleme dans l'ecriture d'une requete
    Par orion_ dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/10/2009, 16h44
  2. Ecriture dans une requete
    Par Piou2fois dans le forum IHM
    Réponses: 6
    Dernier message: 24/02/2009, 11h20
  3. boucler sur une requete & affichage resultat
    Par ricoree78 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/08/2007, 15h44
  4. [MySQL] ecriture d'une requête multi-critères
    Par webdestination dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/08/2006, 11h34
  5. [update] Probleme d'ecriture d'une requete
    Par agougeon dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/08/2006, 14h01

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