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 :

Ahlala les LEFT OUTER JOIN


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Points : 76
    Points
    76
    Par défaut Ahlala les LEFT OUTER JOIN
    Bonjour,
    j'ai 3 tables: Organisme, Contact et Contact_Organisme
    J'ai besoin de trouver des organismes même quand je n'ai pas de contact associé (à travers la table Contact_organisme). Cette requête ci-dessous ne me retourne que les organismes qui ont des contacts.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT O_ID.ID_ORGANISME 
    FROM ( SELECT DISTINCT O.ID_ORGANISME, O.NOM, C.PRENOM, C.NOM, O.TELEPHONE, C.MAIL, O.VILLE 
    FROM ORGANISME O 
    LEFT OUTER JOIN CONTACT_ORGANISME CONTACT_O ON O.ID_ORGANISME = CONTACT_O.ID_ORGANISME 
    LEFT OUTER JOIN CONTACT C ON CONTACT_O.ID_CONTACT = C.ID_CONTACT WHERE O.NOM LIKE 'o%' ORDER BY O.NOM ASC) AS O_ID
    Si je rajouter des clauses WHERE CONTACT_O.ID_ORGANISME cela ne me retourne que les organismes qui n'ont pas de contact.
    Comment puis-je avoir les deux?
    Merci.

  2. #2
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    veuillez bien illustrer votre cas avec des tables renseignées

  3. #3
    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 : 61
    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 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Pourquoi t'embêter avec une sous-requête ?
    Cette requête devrait afficher NULL pour toutes les colonnes de CONTACT quand l'organisme n'a pas de contact.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT O.ID_ORGANISME, O_NOM, C.PRENOM, C.NOM, O.TELEPHONE, C.MAIL, O.VILLE
    FROM ORGANISME O
    LEFT OUTER JOIN CONTACT_ORGANISME CO ON CO.ID_ORGANISME = O.ID_ORGANISME
      LEFT OUTER JOIN CONTACT C ON C.ID_CONTACT = CO.ID_CONTACT
    WHERE O.NOM LIKE 'o%'
    ORDER BY O.NOM ASC
    Si je rajouter des clauses WHERE CONTACT_O.ID_ORGANISME cela ne me retourne que les organismes qui n'ont pas de contact.
    Comment puis-je avoir les deux?
    Comme la restriction porte sur la table CONTACT, située à droite du LEFT OUTER JOIN, il faut mettre la condition de restriction dans la condition de jointure.
    Ceci dit, je ne vois pas trop l'intérêt de mettre une condition sur l'identifiant de l'organisme en allant chercher celui-ci dans la table CONTACT_ORGANISME !

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Points : 76
    Points
    76
    Par défaut
    Merci!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/01/2015, 11h19
  2. Comment les SGBD traduisent une clause LEFT OUTER JOIN
    Par flamant dans le forum Hibernate
    Réponses: 9
    Dernier message: 03/01/2013, 06h37
  3. Problème avec left outer join
    Par jgfa9 dans le forum Requêtes
    Réponses: 1
    Dernier message: 22/08/2005, 21h07
  4. Problème de performance avec LEFT OUTER JOIN
    Par jgfa9 dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/07/2005, 13h17
  5. concatenation de chaine dans un left outer join
    Par the_edge dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/11/2004, 16h08

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