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.
Partager