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 :

Problème de sélection dans deux tables


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 84
    Points : 49
    Points
    49
    Par défaut Problème de sélection dans deux tables
    Bonjour,

    J'ai une requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL="SELECT Fournisseur.CODE_FRS AS CODE_FRS, Fournisseur.Nom_Client AS Nom_Client, Client.ClientID AS ClientID FROM Client LEFT OUTER JOIN Fournisseur ON Fournisseur.CODE_FRS = Client.CODE_FRS WHERE (Client.ClientID='"+sClientID+"' OR Client.ClientID IS NULL) ORDER BY Nom_Client"
    Cette requête est censée m'afficher tous les Code_Frs ainsi que leur noms clients en ayant passé en paramètre le clientID.
    J'ai préalablement sélectionné un client (clientid), j'aimerais que cette requête me sorte les CODE_FRS que possède mon client
    ainsi que ceux qu'il ne possède pas.

    Quand j'exécute cette requête, j'ai à l'écran seulement les fournisseurs que le client possède déjà.

    Je ne comprends pas où est mon erreur ...

    Dans la table Fournisseur j'ai : Code_FRS et Nom_Client
    Dans la table client j'ai : Nom_Client et ClientID

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 392
    Points
    28 392
    Par défaut
    Avec un petit exemple de données (résultat attendu, résultat obtenu), ce serait plus facile à comprendre.
    Je me demande toutefois si ce n'est pas plutôt un RIGHT JOIN qu'il faudrait que tu fasses.

  3. #3
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    Bonjour et merci pour votre réponse rapide !

    En effet ça va déjà mieux, j'ai les fournisseur du client que j'ai sélectionné, ainsi que les fournisseur qui n'appartiennent à aucun client mais je n'ai pas tous les fournisseurs.

    Exemple :
    les fournisseurs existant : Orange, Sfr, Bouygues.
    Clients existant : Carrefour, inter.
    Si Carrefour a comme fournisseur Orange et SFR et que inter a SFR alors quand je clic sur inter je vois SFR et Bouygues.
    SFR car il appartient à inter et Bouygues car il n'appartient à personne mais je ne vois pas Orange.
    Egalement, si je sélectionne Carrefour, je vais voir Orange, SFR et Bouygues car Orange et SFR lui appartiennent mais Bouygues n'appartient à personne donc je le vois aussi.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    SFR car il appartient à inter et Bouygues car il n'appartient à personne mais je ne vois pas Orange.
    Ceci est normal.
    Lors de la jointure externe, il y a bien un correspondance dans Client pour la fournisseur Orange, à savoir Carrefour. Mais comme son ID n'est ni NULL ni celui de Inter, alors la ligne est supprimée par le filtre
    Il faut ajouter l'Id client dans la condition de jointure

    Essayez ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 
        Fournisseur.CODE_FRS AS CODE_FRS, 
        Fournisseur.Nom_Client AS Nom_Client, 
        Client.ClientID AS ClientID 
    FROM Fournisseur 
    LEFT OUTER JOIN Fournisseur 
        ON Fournisseur.CODE_FRS = Client.CODE_FRS 
        AND Client.ClientID='"+sClientID+"' 
    WHERE (Client.ClientID='"+sClientID+"' OR Client.ClientID IS NULL) ORDER BY Nom_Client"

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 392
    Points
    28 392
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Essayez ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 
        Fournisseur.CODE_FRS AS CODE_FRS, 
        Fournisseur.Nom_Client AS Nom_Client, 
        Client.ClientID AS ClientID 
    FROM Fournisseur 
    LEFT OUTER JOIN Fournisseur 
        ON Fournisseur.CODE_FRS = Client.CODE_FRS 
        AND Client.ClientID='"+sClientID+"' 
    WHERE (Client.ClientID='"+sClientID+"' OR Client.ClientID IS NULL) ORDER BY Nom_Client"
    Tu souhaitais sans doute écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT 
        Fournisseur.CODE_FRS AS CODE_FRS, 
        Fournisseur.Nom_Client AS Nom_Client, 
        Client.ClientID AS ClientID 
    FROM Fournisseur
    LEFT OUTER JOIN Client
        ON Fournisseur.CODE_FRS = Client.CODE_FRS 
        AND Client.ClientID='"+sClientID+"' 
    ORDER BY Nom_Client"

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    oups,

    Oui, avec les bons noms de table, ça devrait aller mieux.
    et effectivement, la clause WHERE devient inutile.

  7. #7
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    Super merci beaucoup ça fonctionne beaucoup mieux !
    Encore merci pour votre réactivité et vos explications

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/05/2015, 10h55
  2. [WD16] Problème de sélection dans une table
    Par mubbes dans le forum WinDev
    Réponses: 1
    Dernier message: 07/03/2012, 14h14
  3. problème champ date dans deux tables
    Par sky88 dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/12/2010, 00h22
  4. Réponses: 2
    Dernier message: 22/07/2009, 15h08
  5. Problème avec Insert dans une table contenant deux clés
    Par pure_blue dans le forum Accès aux données
    Réponses: 5
    Dernier message: 23/10/2006, 19h32

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