"fetch first 1 rows only" dans un "Left Join"
Bonjour à tous,
j'ai une requete SQL avec beaucoup de jointures de type left pour compléter les données d'une première série de tables liées par inner join...
Ca marche très bien sauf que dans une des tables jointes par left join, je constate que je peux avoir plusieurs doublons. je voudrais limiter à la toute première occurrence pour ne pas modifier le vrai nombre de ligne provenant des tables liées en inner join.
Mon explication n'est pas terrible, désolé :?
Pour être plus clair, disons que j'ai les tables suivantes :
Code:
1 2 3 4
|
T1(id, libelle)={1, 'toto'; 2, 'tptp'; ... },
T2(id, libelle)={1, 'tata'; 2, 'tbtb'; ... },
T3(id, libelle)={1, 'txtx'; 1, 'tyty; 3, 'tztz'; ...} |
je veux lier T1, T2 et T3 pour obtenir un tableau qui donne une seule ligne par T1.ID (où T3.ID ne va pas me créer un doublon car id non unique) :
Code:
1 2 3
| 1, toto, tata, txtx
2, tptp, tbtb, tztz
... |
> Je veux volontairement perdre tyty par exemple.
Si je fais :
Code:
1 2 3
| SELECT *
FROM T1 INNER JOIN T2 ON T1.ID=T2.ID
LEFT OUTER JOIN T3 ON T1.ID=T3.ID |
> je recois 2 lignes avec id = 1 donc pas bon.
Pour limiter à une seule ligne de résultat je connais cette syntaxe mais qui ne peut s'appliquer qu'après un where :
Code:
SELECT ID FROM T3 WHERE ID=1 fetch first 1 rows only
> il faudrait que je puisse appliquer cette directive directement à l'intérieur de la jointure.
Code:
1 2 3
| ...
LEFT OUTER JOIN T3 ON T1.ID=T3.ID (???que mettre??)
... |
voilà... c'est pas simple à expliquer 8O J'espère que vous comprenez.
Merci de votre aide,
Nico