Welcome Guest! Log in
×

Notice

The forum is in read only mode.
Due to some maintenance operations, stambia.org will be switched to read-only mode during the 13th November. It will be possible to read and download, but impossible to post on the forums or create new accounts. For any question please contact the support team.

Topic-icon Question faire un filtre avant la jointure ?

More
09 Sep 2015 14:58 #1 by zineddine007
zineddine007 created the topic: faire un filtre avant la jointure ?
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
Thomas BLETON replied the 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
zineddine007 replied the 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
Thomas BLETON replied the 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
Emmanuel replied the 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.