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

MS SQL Server Discussion :

Problème de jointure entre 3 tables


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 10
    Points
    10
    Par défaut Problème de jointure entre 3 tables
    Bonjour,

    J'ai trois tables

    Process (p_id, process_name)
    Document (d_id, fk_process_id, doc_name)
    Message(m_id,fk_document_id, msg_name)

    Process et le parent de Document qui est le parent de Message, un Process peut ne pas avoir de document, et un Document peut ne pas avoir de message. Je voudrais faire une requette qui permet de récuperer tout les process qui onts ou pas de Document et/ou de Message. Mais quand pas de documment avoir doc_name=null, et quand pas de message avoir msg_name=null. Exmple :

    p_id process_name d_id doc_name m_id msg_name

    1 p_name1 null null null null
    2 p_name_2 1 d_name1 null null
    3 p_name_3 2 d_name2 1 m_name1



    Je ne veux pas utiliser des jointure externe, car le principe de la jointure externe est de récupérer tout le reste de la table qui ne respecte pas la condition de la jointure et ce n'est pas ce que je souhaites dans mon cas.

    J'ai utilisé la requete suivante mais elle ne me recuperer que la ligne 3

    SELECT BP.p_id BP_ID, DOC.d_id DOC_ID, MSG.m_id MSG_ID

    FROM Process BP, Document DOC, Message MSG

    where DOC.fk_process_id=BP.p_id and MSG.fk_documennt_id=DOC.d_id


    C'est normal qu'elle me retourne que la 3 ligne, car c'est une jointure naturelle et donc multiplication de resultats.

    Merci de m'aider à trouver un requete qui me renvoi les 3 lignes mais sans passer par des jointures externes.

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par relbeghdadi Voir le message
    Merci de m'aider à trouver un requete qui me renvoi les 3 lignes mais sans passer par des jointures externes.
    Faire ce que tu veux sans jointures externes, c'est un peu comme enfoncer un clou sans marteau :
    [ame="http://www.youtube.com/watch?v=Jf1fRu9YgfE"]Nokia Lumia Screen 900 Hammer Test - YouTube[/ame]

    ...ou déboucher une bouteille sans tire-bouchon :
    [ame="http://www.youtube.com/watch?v=8EZZVIyVeQI"]How to open a bottle of wine with your shoe.wmv - YouTube[/ame]

    ...ou ouvrir une bouteille de bière sans décapsuleur :
    [ame="http://www.youtube.com/watch?v=iLX4G-JL-0E"]For The Win - How to Open a Beer With...Anything - YouTube[/ame]

    Après tout, pourquoi faire simple quand on peut faire compliqué ?
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 698
    Points : 586
    Points
    586
    Par défaut
    Faut utilisé ce qui est a disposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select P.*,D.*,M.*
    FROM Process P
    LEFT JOIN Document D on P.P_Id=D.fk_process_id
    LEFT JOIN Message M on M.fk_document_id=D.D_id

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    @Donpi: avec des LEFT JOIN, ça ira mieux...
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 698
    Points : 586
    Points
    586
    Par défaut
    Citation Envoyé par pcaboche Voir le message
    @Donpi: avec des LEFT JOIN, ça ira mieux...
    juste

Discussions similaires

  1. Problème de jointures entre 3 tables
    Par Ben001 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/09/2009, 19h04
  2. [MySQL] Probléme de jointure entre deux tables
    Par super-java dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/06/2008, 14h49
  3. Problème de Jointure entre plusieurs tables
    Par Stouille89 dans le forum JDBC
    Réponses: 12
    Dernier message: 11/12/2007, 14h16
  4. Problème de jointure entre 2 tables Access
    Par MITCH31 dans le forum VBA Access
    Réponses: 8
    Dernier message: 14/12/2005, 14h31
  5. Problème de jointure entre 3 tables
    Par Yphon dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/09/2005, 15h58

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