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 :

Double condition WHERE


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Points : 64
    Points
    64
    Par défaut Double condition WHERE
    Bonjour à tous,

    Je bute sur une commande SQL ( utilisée avec PHP ) qui comporte la fonction LEFT JOIN ( ou RIGHT JOIN).
    Me requete ne m'affiche pas tous les enregistrement de ma table lorsque j'integre 2 conditions WHERE.
    J'espère avoir été le plus clair possible dans ma demande.
    Voici le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $select = "SELECT avantages.libelle, evenements.ID_ava   
    FROM evenements
    RIGHT JOIN avantages 
    ON avantages.ID_ava = evenements.ID_ava 
    WHERE avantages.Formule = 'FA1' AND evenements.ID_adh = '2'";
    Merci à tous

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Points : 64
    Points
    64
    Par défaut
    Complement d'infos sur sgdb : mysql 5.5.20
    Merci

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Il faut remonter le filtre sur avantages dans la clause ON :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT avantages.libelle, evenements.ID_ava   
      FROM evenements
     RIGHT JOIN avantages 
        ON avantages.ID_ava = evenements.ID_ava and avantages.Formule = 'FA1' 
     WHERE evenements.ID_adh = 2
    A lire : Jointure externe et condition de restriction

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    On utilise un LEFT ou RIGHT JOIN quand on cherche une absence de correspondance dans une table par rapport à une autre.
    Les lignes pour lesquelles il y a absence de correspondance sortent avec toutes leurs colonnes à NULL.
    Dans la requête montrée ici, il y a contradiction entre cet usage et les clauses WHERE employées, puisque les clauses interdisent toute valeur à NULL dans les 2 tables.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Points : 64
    Points
    64
    Par défaut
    Un grand merci ...

    Vos explications m'ont une fois de plus mises sur la bonne voie !!
    Voici mon code modifié pour obtenir le résultat escompté
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $select = "SELECT avantages.libelle, evenements.ID_ava   
    FROM evenements
    RIGHT OUTER JOIN avantages 
    ON avantages.ID_ava = evenements.ID_ava AND evenements.ID_adh = '2' 
    WHERE Formule = 'FA1'";

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

Discussions similaires

  1. [AC-2007] Double condition Where avec utilisation de AND dans DoCmd.OpenReport
    Par m1koo dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/03/2012, 08h28
  2. Réponses: 3
    Dernier message: 16/02/2006, 16h58
  3. Condition WHERE
    Par adilou1981 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/11/2004, 11h04
  4. Fonction MAX dans une condition WHERE
    Par borgfabr dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 16h06
  5. Réponses: 6
    Dernier message: 24/09/2004, 13h10

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