|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : août 2005 Messages : 4 ![]() |
Bonjour et merci de me lire. Je suis inexpérimenté et ai besoin d'aide.
J'ai 4 tables, L T P et D. Je désire faire une jointure interne sur les 3 premières, et réaliser une jointure externe sur la dernière ( D ). En effet, les champs issus de D sont facultatifs. Or le nombre de lignes retourné est de 30097 à la fin, alors que la table de départ ( issu de la jointure interne ) est de 26369 . J'ai essayé qu'avec les jointures, puis ai essayé avec une sous requête, mais sans succès : je me retrouve toujours avec un nombre de ligne de 30097. Je ne comprends pas. ma requete juste en jointures: Code :
Code :
|
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 529 ![]() |
Saluton,
Ton raisonnement n'est recevable que si tu as des liaisons 1-1 entre les tables, dès qu'il y a possibilité d'une liaison 1-n ....
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#3 | |
![]() ![]() |
Tu peux faire un EXPLAIN de ta requête ?
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : août 2005 Messages : 4 ![]() |
Merci de cet avis. Ma table D a cependant bien uniquement une seule possibilité de jointure selon le ON.
Je sèche vraiment sur ce coup là... pour plus de précision : 26369 issus des deux premières jointures. la première table L a 26 404 enregistrements, le table P en a 1261 et la table T en a 3223. Les 26369 sont justes, c'est vérifié. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : août 2005 Messages : 4 ![]() |
Voici le retour de EXPLAIN : je suis trop débutant pour comprendre cela.
0 : id : 1 0 : select_type : SIMPLE 0 : table : D 0 : type : ALL 0 : possible_keys : 0 : key : 0 : key_len : 0 : ref : 0 : rows : 3513 0 : Extra : 1 : id : 1 1 : select_type : SIMPLE 1 : table : L 1 : type : ref 1 : possible_keys : Behandlung_Kv 1 : key : Behandlung_Kv 1 : key_len : 5 1 : ref : movedb.T.Zahler 1 : rows : 6 1 : Extra : Using where 2 : id : 1 2 : select_type : SIMPLE 2 : table : P 2 : type : ALL 2 : possible_keys : Nummer 2 : key : 2 : key_len : 2 : ref : 2 : rows : 1261 2 : Extra : 3 : id : 1 3 : select_type : SIMPLE 3 : table : T 3 : type : ref 3 : possible_keys : PRIMARY,Patient 3 : key : Patient 3 : key_len : 5 3 : ref : movedb.P.Nummer 3 : rows : 1 3 : Extra : Using where |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 529 ![]() |
Donc déjà certaines liaisons L->T ou T->P ne sont pas en 1-1 mais en 1-n
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#7 | ||
![]() ![]() |
Quel est le résultat de cette requête ?
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : août 2005 Messages : 4 ![]() |
Oui, je commence a comprendre. En vérité, il faut D.FK_Behandlung soit unique pour que cela fontionne comme cela. Je viens de regarder, ce n'est pas le cas.
Merci, a moi de trouver une solution. Problème résolu ( ou plutôt compris Merci a tous de votre contribution. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com