|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : décembre 2010 Messages : 24 ![]() |
Bonjour à tout le monde,
Ma requête sql marche à moitié : Je vous expliques : Bonjour, j'ai un petit problème de requete, Je vous explique : Je dispose de 3 tables : Une table FAMILLE(cdFam,nomFam,adFam,...) Une table STAGE(cdStage,dateStage,...) Une table PARTICIPATION_FAMILLE(cdFam,cdStage,nbStagiaires) Une famille peut participer à plusieurs stage et possède un nombre de stagiaire pour ceux ci Et je voudrais lister toutes les familles avec le nombre de stagiaires qu'elle prennent pour les stages numero 1 et numero 3 Je fais donc la requete suivante avec 2 jointures externe: Code :
J'arrive pas à comprendre ?! Avez vous une idée ? Merci d'avance |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
salut,
essaye de changer le and de ton where entre les 2 conditions qui doit être un or pour que ça renvoie l'un ou l'autre |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : décembre 2010 Messages : 24 ![]() |
Oui, ça donne le bon résultat mais la requête liste en double des familles
Par exemple une famille qui participe au stage 1 et 3 apparait 3 fois une fois pour le stage 1, un fois pour le stage 3 et une fois pour le stage 1 et 3 |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
en supprimant les parties avec is null ça donne quoi?
au fait pourquoi tu mets pas ces conditions chacune au niveau de tes jointures plutôt que dans le where? |
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : décembre 2010 Messages : 24 ![]() |
la même chose mais sans les familles qui ne participent à aucun des 2 stages
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
vu que chacun des groupes de condition correspond à une des jointure ça devrait être rajouter avec un and dans la condition de la jointure visée
à savoir qu'un outer join génère des lignes supplémentaires pour chaque partie d'une la jointure qui génère un résultat de plus d'une ligne |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : décembre 2010 Messages : 24 ![]() |
Si je fait dans le WHERE
pfJ.cdStage=1 AND pfA.cdStage=3 Il va me lier que les familles qui participent aux stages 1 et 3 |
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
non avec or
Code :
|
||
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : décembre 2010 Messages : 24 ![]() |
Je ne comprends pas trés bien le principe de OUTER JOIN ?
Si je mets la même chose dans le WHERE mais avec un OR, ça me liste toutes le familles qui participent à des stages et en triple apr exmple ceux qui participent au 1, 3 et 1,3 |
|
|
00
|
|
|
#10 | ||
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
"left join" c'est en fait "left outer join"
en fait, ça équivaut à ça: Code :
|
||
|
|
10
|
|
|
#11 |
|
Futur Membre du Club
![]() Inscription : décembre 2010 Messages : 24 ![]() |
Purée mais ça marche !!!
Je ne savais pas qu'on devait mettre la restriction de jointure dans le JOIN J'avais l'habitude avec oracle de faire la jointure dans le WHERE avec un (+) à droite si LEFT JOIN ou a gauche si RIGHT JOIN et la condition sur ces jointure dans le where, mais apparement avec cette syntaxe la condition ce mets dans le JOIN ! et si jamais je la mets dans le WHERE ça deconne ! :p Coule Alors ! Merci !!!!!!!!!! |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
tu peux faire ça sur tous les sgbd normalement vu que c'est une écriture ansi...
ta condition de jointure ne porte donc pas forcément sur un seul critère... tout ce qu'il y a entre le "on" et la déclaration d'une autre jointure ou d'un where éventuelle affectera la jointure en cours donc. de rien
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com