1. #1
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    mai 2015
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    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 : 63
    Points : 48
    Points
    48

    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
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 283
    Points : 22 020
    Points
    22 020

    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.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    mai 2015
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    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 : 63
    Points : 48
    Points
    48

    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
    Inscrit en
    janvier 2010
    Messages
    4 433
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2010
    Messages : 4 433
    Points : 8 978
    Points
    8 978

    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
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 283
    Points : 22 020
    Points
    22 020

    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"
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    janvier 2010
    Messages
    4 433
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2010
    Messages : 4 433
    Points : 8 978
    Points
    8 978

    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
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    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 : 63
    Points : 48
    Points
    48

    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. [JSF / Hibernate / Oracle BDD] Problème d'insertion dans deux tables à la fois
    Par Racha07 dans le forum Développement Web en Java
    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