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 et SQL. Discussion :

Eliminer certaines valeurs dans une requête [AC-2000]


Sujet :

Requêtes et SQL.

  1. #1
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut Eliminer certaines valeurs dans une requête
    Salut à tous,
    Je suis en train de faire une petite base pour gérer des locations d'appartements.
    J'ai un petit souci avec une requête qui sert de source à une liste déroulante.
    Cette liste me donne tous les appartements libres.
    donc, tous les appartements jamais loués, ainsi que ceux qui ont été loués et restitués.
    Or je viens de découvrir en faisant des tests, que si un appartement a été loué, restitué et reloué, il apparait dans ma liste.
    Voilà la requête source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCTROW Tbl_Appartement.Id_Appartement, [Tbl_Appartement]![TypeAppartement] & " " & [Tbl_Appartement]![RefAppart] & " " & [Tbl_Appartement]![Surface] & "m²" AS Appart, Tbl_Appartement.Id_Biens, Tbl_Location.DateEffet, Tbl_Location.DateReceptionResiliation
    FROM Tbl_Appartement LEFT JOIN Tbl_Location ON Tbl_Appartement.Id_Appartement = Tbl_Location.Id_Appartement
    GROUP BY Tbl_Appartement.Id_Appartement, [Tbl_Appartement]![TypeAppartement] & " " & [Tbl_Appartement]![RefAppart] & " " & [Tbl_Appartement]![Surface] & "m²", Tbl_Appartement.Id_Biens, Tbl_Location.DateEffet, Tbl_Location.DateReceptionResiliation
    HAVING (((Tbl_Location.DateEffet) Is Null)) OR (((Tbl_Location.DateReceptionResiliation) Is Not Null));
    Y a t il une solution, ou dois-je modifier la structure de ma base ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 654
    Points : 34 373
    Points
    34 373
    Par défaut
    salut,

    comme je n'ai compris les champs via leur libelle, voici une idee generale pour ta problematique :

    - appart n'est pas libre si la date de debut est anterieure a aujourd'hui et date de fin est null ou >aujourd'hui

    - il l'est dans le cas contraire

    non ?

  3. #3
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Re bonjour,

    Je n'avais pas retouché à ma base depuis quelques temps et je reviens sur mon problème.

    Merci jpcheck, mais soit, je n'arrive pas à "coder" les conditions en SQL, soit il manque quelque chose....
    J'ai toujours un appart qui bien que loué apparait dans la liste car il a déjà été loué et rendu.

    De plus, un appart peut être dispo à la location, même si la fin de bail est postérieure à la date d'aujourdh'ui.

    Pour qu'un appart soit libre, il faut qu'il y ait
    -ni date de début, ni date de fin (appart jamais loué)
    -une date de debut et une date de fin et pas de nouvelle date de début (appart loué et rendu)

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 654
    Points : 34 373
    Points
    34 373
    Par défaut
    salut,
    pour detecter un appartement occupe, tu filtres donc sur :
    - date de fin a null ou >maintenant
    - date de debut non null
    non ?

  5. #5
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Re,

    Comme quoi, essayer d'expliquer le problème permet de le comprendre....

    Pour que mon appart soit libre, il suffit que le nombre de date de début et de date de fin soit identiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCTROW .......
    HAVING ((Count(Tbl_Location.DateEffet))=Count([DateReceptionResiliation])));
    Merci à ceux qui se sont penché sur mon problème.

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

Discussions similaires

  1. [AC-2003] Macro - Récupérer valeur dans une requête
    Par damsmut dans le forum Modélisation
    Réponses: 5
    Dernier message: 16/06/2009, 16h17
  2. Entrer une valeur dans une requête en VBA
    Par Cyriusix dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 19/05/2008, 08h48
  3. COmment modifier des valeurs dans une requête?
    Par thibouille dans le forum Bases de données
    Réponses: 20
    Dernier message: 26/02/2008, 16h43
  4. Réponses: 6
    Dernier message: 15/02/2008, 11h10
  5. numéroter les lignes ayant la même valeur dans une requête
    Par raiamanu dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 12/10/2007, 10h49

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