|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Futur Membre du Club
![]() Développeur informatique Inscription : mai 2007 Messages : 38 ![]() |
Salut tout le monde.
Oui un post de plus sur les jointures mais là je sèche et mes recherches n'apportent rien. J'essaie de faire une requête sur une table avec une jointure sur elle même, mais avec une jointure à gauche ça ne me retourne rien. D'abord la table avec ses données : Code :
Code :
Code :
Code :
Note : Oracle 9i |
||||||||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
Je pense que tu inverses les jointures externes.
Le (+) est du côté de la table qui peut avoir aucune donnée (et donc renvoyer NULL), donc ce serait Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Développeur informatique Inscription : mai 2007 Messages : 38 ![]() |
Effectivement je me suis trompé dans ma requête avec la syntaxe (+). Le (+) doit se trouver du coté opposé à celui où l'on ne veut pas de réponses NULL.
Par contre pour la syntaxe avec le left c'est bon, le left indique le coté sur lequel se base la requête (et donc celui où il n'y aura pas de null) dans la condition qui suit. Avec "LEFT OUTER JOIN TEST t2 ON t1.mois = t2.mois" le t1.mois est à gauche dans la condition. Dans le doute j'ai changé pour un right (et remit les (+) à la bonne place), mais toujours aucun résultat. :/ |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
En fait j'avais pas fait gaffe :
Code :
AND t2.dat <= TO_DATE ('31/03/1997', 'DD/MM/YYYY')
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
En fait j'avais pas fait gaffe :
Code :
AND t2.dat <= TO_DATE ('31/03/1997', 'DD/MM/YYYY') Rajoute juste un NVL ou un (OR IS NULL)
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#6 |
|
Futur Membre du Club
![]() Développeur informatique Inscription : mai 2007 Messages : 38 ![]() |
C'est pourtant le principe d'une jointure externe d'avoir un résultat même si les conditions de la requête font qu'il soit null.
Enfin j'ai quand même testé ta solution mais non toujours aucun résultat. Je teste les même requête sous sql-server et pareil, je comprends pas. :/ |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
Code :
|
||
|
|
00
|
|
|
#8 |
|
Futur Membre du Club
![]() Développeur informatique Inscription : mai 2007 Messages : 38 ![]() |
Bon ben mnitu a fait le minimum syndicale pour sa réponse mais faut reconnaître que ça marche.
Je pense que je comprend un peu mieux du coup, avec ma requête la condition sur le t2.dat s'appliquait sur un premier résultat et donc rien n'était retourné. Bref, merci McM pour ton temps et mnitu pour la solution. |
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
En fait tout simplement
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Développeur informatique Inscription : mai 2007 Messages : 38 ![]() |
Ah oue tiens, je préfère cette syntaxe.
Merci. |
|
|
00
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
|
|
|
00
|
|
|
#12 |
|
Futur Membre du Club
![]() Développeur informatique Inscription : mai 2007 Messages : 38 ![]() |
Oui j'ai compris des trucs avec ta syntaxe, merci.
Et au final c'est elle que j'ai retenue, puisqu'en fait sur l'exemple que j'ai donné la tienne et celle de McM donne le même résultat, mais sur ma base avec des conditions supplémentaires ça n'est plus le cas. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com