Welcome Guest! Log in
×

Notice

The forum is in read only mode.
Stambia versions 2.x, 3.x, S17, S18, S19 and S20 are reaching End of Support January, 15th, 2024. Please consider upgrading to the supported Semarchy xDI versions. See Global Policy Support and the Semarchy Documentation.

The Stambia User Community is moving to Semarchy! All the applicable resources have already been moved or are currently being moved to their new location. Read more…

Topic-icon Question faire un filtre avant la jointure ?

More
09 Sep 2015 14:58 #1 by zineddine007
faire un filtre avant la jointure ? was created by zineddine007
Bonjour,
schéma de la table A (code1,code2,, , , , , ,) clé primaire (code1,code2)
1) j'utilise la même table A deux fois A_src et A_2
2) je mets un filtre sur la A_2 (code2 = 2500)
3) je fait un left join A_src A_2 ON A_src.code1 = A_2.code1

j'ai l’impression que stambia calcule le résultat de la jointure , puis applique le filtre a la fin ce qui me rend des valeurs fausse (nul)
je n'ai pas ce que je veux car une fois il n y a pas de valeur dans la table de droite il prend pas en compte les valeurs de gauche

Comment faire un filtre sur A_2 puis lui appliquer un Left join ??
More
09 Sep 2015 16:52 #2 by Thomas BLETON
Replied by Thomas BLETON on topic faire un filtre avant la jointure ?
En effet les filtres s'appliquent sur l'ensemble joint.
Si vous êtes en version S18, vous pouvez créer un Stage (cf l'aide du Designer pour plus d'information) mappé avec la table A_2 filtrée, puis joindre le Stage avec la table A_src.
En S17 il vous faudra passer par une table intermédiaire.
More
10 Sep 2015 15:46 #3 by zineddine007
Replied by zineddine007 on topic faire un filtre avant la jointure ?
Merci Thomas
Je suis en S17.1.20 donc je n'ai pas le choix que d'utiliser la seconde proposition.
Pour cela il faut me créer une table intermédiaire (table temporaire ); cette action m'obligera à modifier ma métadata de connexion vers la Base de Données !!
il n y 'aurai pas un moyen de créer une table intermédiaire(qui est le résultat de A_src filitrée == A_2 dans mon exemple) sans ajouter la table A_2 dans la BD et sans modifier la métadata en essayant de charger cette nouvelle table afin de l'utiliser dans mes mapping ??
Merci d'avance.
More
11 Sep 2015 15:39 #4 by Thomas BLETON
Replied by Thomas BLETON on topic faire un filtre avant la jointure ?
Difficile d'être précis sans avoir le projet sous les yeux, mais avez-vous essayé de placer le filtre sur A_2 directement dans l'expression de jointure ?
=> Expression de jointure :
A_src.code1 = A_2.code1 AND A_2.code2 = 2500
More
19 Sep 2015 17:09 #5 by Emmanuel
Replied by Emmanuel on topic faire un filtre avant la jointure ?
Bonjour,

Je confirme que ce n'est pas un problème Stambia mais une spécificité du SQL pour les jointures externes. Tu aurais le problème avec n'importe quel autre outil. Il faut, comme le souligne Thomas, mettre le filtre directement dans la jointure, et non sur la table.

Ce lien explique très bien le cas.

Bonne journée.