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 :

Requête SQL incompréhensible


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 24
    Points
    24
    Par défaut Requête SQL incompréhensible
    Bonjour à tous voilà j'ai un problème sur une requête que je ne comprends pas.
    Je veux lister tous les articles de ma table avec une petite jointure voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT 
    Articles.reference,
    FOURNISSEURS.NOM_FOURN
    FROM 
    Articles 
    LEFT OUTER JOIN FOURNISSEURS ON (Articles.code_fourn = FOURNISSEURS.CODE_FOURN)
    Pour info je fais une jointure externe sur ma table FOURNISSEURS car tous mes articles n'ont pas forcement de fournisseurs.
    Quand je fais cela pas de souci.

    maintenant j'ajoute une petite condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT 
    Articles.reference,
    FOURNISSEURS.NOM_FOURN
    FROM 
    Articles 
    LEFT OUTER JOIN FOURNISSEURS ON (Articles.code_fourn = FOURNISSEURS.CODE_FOURN)
    WHERE Articles.EnAchat = 1
    Ma requête fonctionne mais souci ne m'affiche pas UN ET UN SEUL article alors que ce dernier respecte bien cette condition (EnAchat =1 dans ma table article pour ce dernier)

    Et si j'ajoute une deuxième condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT 
    Articles.reference,
    FOURNISSEURS.NOM_FOURN
    FROM 
    Articles 
    LEFT OUTER JOIN FOURNISSEURS ON (Articles.code_fourn = FOURNISSEURS.CODE_FOURN)
    WHERE Articles.EnAchat = 1
    AND Articles.EnExploitation = 1
    Alors la mon article manquant réapparait

    Et pour dire d'avoir tout dit si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT 
    Articles.reference,
    FOURNISSEURS.NOM_FOURN
    FROM 
    Articles 
    LEFT OUTER JOIN FOURNISSEURS ON (Articles.code_fourn = FOURNISSEURS.CODE_FOURN)
    WHERE Articles.EnExploitation = 1
    Mon article apparait bien..................

    Je n'y comprends rien

    Avez-vous une idée s'il vous plait parce que la je ne sais ou donner de la tête

  2. #2
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Bonjour,

    Il nous manque :
    - ton jeu de données
    - ton résultat attendu
    - ton SGBD

    Car je pense qu'ici ton problème vient plutôt du choix des conditions.
    ~ Lola ~

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par lola06 Voir le message
    Bonjour,

    Il nous manque :
    - ton jeu de données
    - ton résultat attendu
    - ton SGBD

    Car je pense qu'ici ton problème vient plutôt du choix des conditions.
    Salut, que veux tu dire par : Jeu de données ????

    parceque le résultat attendue c'est de voir mon articles et mon SGBD c'est une base HyperFile SQL

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Que veux-tu dire par là ?
    Ma requête fonctionne mais souci ne m'affiche pas UN ET UN SEUL article alors que ce dernier respecte bien cette condition (EnAchat =1 dans ma table article pour ce dernier)
    1) Elle devrait n'afficher qu'un seul article parce que tu n'en as qu'un pour lequel la colonne EnAchat vaut 1 ?

    2) Elle affiche certains articles en double ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT 
    Articles.reference,
    FOURNISSEURS.NOM_FOURN
    FROM 
    Articles 
    LEFT OUTER JOIN FOURNISSEURS ON (Articles.code_fourn = FOURNISSEURS.CODE_FOURN)
    WHERE Articles.EnAchat = 1
    Ta requête doit afficher tous les articles dont la colonne EnAchat a pour valeur 1 avec le nom du fournisseur s'il y en a un et NULL s'il n'y en a pas.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Que veux-tu dire par là ?

    1) Elle devrait n'afficher qu'un seul article parce que tu n'en as qu'un pour lequel la colonne EnAchat vaut 1 ?

    2) Elle affiche certains articles en double ?
    Pardon je me suis mal fait comprendre.
    En fait ma requête affiche tous les articles correspondant à cette condition (EnAchat =1) sauf ce fameux article que je ne vois pas et qui malgré tout correspond bien à la condition (la rubrique EnAchat est bien égal à 1 pour ce fameux article qui ne s'affiche pas)

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par GDev80 Voir le message
    Pardon je me suis mal fait comprendre.
    En fait ma requête affiche tous les articles correspondant à cette condition (EnAchat =1) sauf ce fameux article que je ne vois pas et qui malgré tout correspond bien à la condition (la rubrique EnAchat est bien égal à 1 pour ce fameux article qui ne s'affiche pas)
    Quel est le type de la colonne EnAchat ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Quel est le type de la colonne EnAchat ?
    Booléen

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Alors le résultat que tu dis obtenir n'est pas logique, comme dirait Mr Spock !

    Trouves-tu ton article manquant sans la jointure ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT 
    Articles.reference
    FROM 
    Articles 
    WHERE Articles.EnAchat = 1
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Yes Sir
    Oui mon article apparait

    Et Mr Spock a raison c'est pas logique c'est pour ça que je suis la

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    C'est vraiment très étrange ton histoire !
    À ta place, je commencerais à avoir de sérieux doutes sur la qualité du SGBD !

    Tu visualises les données renvoyées par la requête de quelle manière ?
    Si c'est à travers une application tierce, il faudrait vérifier le bout de programme qui affiche les données et qui contient peut-être une condition non satisfaite par ton article ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    En parlant du jeu de données je pensais au résultat de cette requête par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT  Articles.reference, FOURNISSEURS.NOM_FOURN 
    FROM  Articles  LEFT OUTER JOIN FOURNISSEURS ON (Articles.code_fourn = FOURNISSEURS.CODE_FOURN)
    Ou les données présentes dans tes deux tables.

    [EDIT] : Est-ce que ton article est présent avec cette requête ?
    ~ Lola ~

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    C'est vraiment très étrange ton histoire !
    À ta place, je commencerais à avoir de sérieux doutes sur la qualité du SGBD !

    Tu visualises les données renvoyées par la requête de quelle manière ?
    Si c'est à travers une application tierce, il faudrait vérifier le bout de programme qui affiche les données et qui contient peut-être une condition non satisfaite par ton article ?
    Je les visualise via le WDSql un logiciel de WinDev en fait

    Je vais essayer de la faire via SQL Server directement

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,

    WDSql ? Attention, Windev a de sérieux problèmes avec les jointures externes !
    Si tu veux lancer des requêtes sur une base autre que HyperFile, je te suggère très fortement de passer par de l'ODBC (ou sinon d'utiliser hRequeteSansCorrection)...

    Tatayo.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Merci pour l'info tatayo je vais essayer de passer par un ODBC

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    En effet mon SGBD pue du cul
    En SQL pur cela fonctionne merci pour votre aide

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

Discussions similaires

  1. Erreur incompréhensible avec une condition if et une requête SQL
    Par Francky44003 dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/04/2011, 17h09
  2. Réponses: 15
    Dernier message: 26/11/2010, 21h38
  3. Echec incompréhensible d'une requête SQL
    Par laurentSc dans le forum Langage
    Réponses: 2
    Dernier message: 11/02/2010, 00h47
  4. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  5. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/02/2003, 16h44

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