Pour avoir un plan d'exécution, il vous suffit d'ajouter l'instruction EXPLAIN avant la requête. Ceci dit, ça ne vous servira à rien ici.
]]>Pourquoi un JOIN ?
Merci
Voici ma démarche :
Les données : dans TABLE1, 3 individus ont la même adresse.
Dans Table 2, l'adresse apparaît 4 fois dont 1 ligne est due à la variable pour les BIS et à une VARIABLE3, 1 ligne due à la variable BIS et une VARIABLE4, 1 ligne à une VARIABLE5.
Je veux récupérer les lignes de TABLE2 qui correspondent à l'ADRESSE de TABLE1 :
SELECT e.*, to_char(b.NUMERO '9999'), b.*
FROM MABASE.TABLE1 e LEFT OUTER JOIN MABASE.TABLE2 b ON ADRESSE = (b.NUMERO || ' ' || b.NOMVOIE) AND (e.TABLE1CP = trim(to_char(b.TABLE2CP, '99999')))
WHERE e.ADRESSE LIKE '%NOMEXEMPLE%';
Le résultat : 9 lignes : 4 lignes de TABLE2 pour 1 individu de TABLE1, 4 lignes pour le 2nd individu == résultat correct mais : 1 seule ligne pour le 3ème individu et les colonnes de TABL2 sont vides!! Pourquoi ?!
Les variables de la jointure du code ci-dessus sont identiques pour les 3 individus de TABLE1, j'ai bien vérifié.
Si vous avez des pistes, merci!