
Envoyé par
lemarin
en fait le probleme que j'ai est le suivant :
lorsque un A a Un D et un C, j'ai deux lignes ou lieu d'une !
ligne 1: A D "rien"
ligne 2: A "rien" C
Ca j'avais compris, c'est déjà à peu près l'exemple que tu nous as donné plus haut.
comment faire pour avoir A D C? je ne veux pas deux fois le A.id dans mon résultat !
C'est un comportement normal du SGBD à cause de la jointure externe.
en sachant que j'ai mis un
select distinct...
DISTINCT s'applique à toute la ligne.
SELECT DISTINCT A, B, C, D
Ca donnera tous les quadruplets {A, B, C, D} différents.
Et donc tu pourras avoir de nouveau plusieurs fois le A.
A1, B1, C1, D1
A1, B2, C1, D1
A1, B1, C2, D1
...
Ce que tu ne comprends pas c'est que le SGBD ne peut pas choisir de lui même quelle priorité donner selon les données qu'il joint.
Si le résultat de la requête actuelle donne ceci :
A1, B1, C1, D1
A1, B1, NULL, NULL
A1, B1, C2, NULL
A1, B1, NULL, D2
A1, B1, C3, NULL
A1, B1, NULL, D3
A1, B1, NULL, D4
Le SGBD est incapable de savoir s'il faut privilégier le quadruplet complet {A1, B1, C2, D2} ou bien {A1, B1, C3, D3} ou bien {A1, B1, C2, D3} ou bien...
Alors comme tu nous dis toujours pas de quoi il s'agit, on ne comprend pas la raison de ce besoin et on ne peut que te répondre théoriquement et par la réalité de ce que fait normalement un SGBD qui est un calculateur ensembliste.
Partager