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

HyperFileSQL Discussion :

Anomalie sur résultat de requête [HF21]


Sujet :

HyperFileSQL

  1. #1
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 327
    Points : 3 840
    Points
    3 840
    Par défaut Anomalie sur résultat de requête
    Bonjour à tous,

    Je rencontre actuellement une anomalie sur le résultat d'une requête que voici :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT FACT_1.IDDevis, FACT_2.IDDevis, fact_1.fac_type, fact_2.fac_type
    FROM FACture AS FACT_1 
    LEFT OUTER JOIN (SELECT TOP 1 facture.iddevis, facture.fac_type FROM FACture WHERE FACture.FAC_Type = 3) AS FACT_2 ON FACT_2.IDDevis = FACT_1.IDDevis
    WHERE FACT_1.IDClient = 431

    La requête ci-dessus retourne 4 résultats car 4 factures.
    Avec le SELECT TOP, je teste la présence d'un type de facture ayant comme dénominateur commun, l'identifiant du devis.
    Pour 3 factures, le test est positif mais malheureusement, toutes les valeurs de fact_2 sont à NULL.

    si je modifie la requête comme suit, tout roule :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT FACT_1.IDDevis, FACT_2.IDDevis, fact_1.fac_type, fact_2.fac_type
    FROM FACture AS FACT_1 
    LEFT OUTER JOIN FACture AS FACT_2 ON FACT_2.IDDevis = FACT_1.IDDevis AND FACT_2.FAC_Type = 3
    WHERE FACT_1.IDClient = 431
    mais le hic c'est que ça ne gère pas la possibilité qu'il y ait plus d'un résultat, et que je ne souhaite pas mettre de DISTINCT du fait de la présence de SUM dans la requête réelle.

    Est-ce que quelqu'un aurait une idée ?
    merci

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TOP 1 facture.iddevis, facture.fac_type 
       FROM FACture WHERE FACture.FAC_Type = 3

    La sous-requete renvoie le premier enregistrement dont le champ FAC_Type = 3.
    Il faut y inclure les 2 autres filtres : IDDevis = FACT_1.IDDevis et IDClient = 431
    Il faudra utiliser un alias aussi dans la sous requete.

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 327
    Points : 3 840
    Points
    3 840
    Par défaut
    Merci pour ta réponse.

    Je vais voir ce que ça donne mais il ne me semble pas que je faisais cela avec d'autre SGBD, et je pensai donc que
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    AS FACT_2 ON FACT_2.IDDevis = FACT_1.IDDevis
    marchait sans soucis.

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 327
    Points : 3 840
    Points
    3 840
    Par défaut
    Bingo, merci à toi et en fait c'est complètement logique ^^.

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

Discussions similaires

  1. [AC-2013] Erreur #Nom? sur résultat de requête importé dans formulaire
    Par juju6612 dans le forum Access
    Réponses: 12
    Dernier message: 22/07/2016, 10h42
  2. [AC-2010] Erreur 3265 sur résultat de requête avec agrégat
    Par Thugann dans le forum VBA Access
    Réponses: 5
    Dernier message: 25/06/2014, 13h39
  3. [ZF 2.0.3] double foreach sur résultat de requête = bug
    Par efreet_cs dans le forum Zend Framework
    Réponses: 3
    Dernier message: 25/10/2012, 20h40
  4. Double concaténation sur résultat de requête
    Par pierre.coudert dans le forum Langage SQL
    Réponses: 7
    Dernier message: 23/07/2008, 04h23
  5. Créer un message d'alerte sur résultat de requête
    Par curt dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/02/2008, 10h56

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