Comment utiliser oracle jointure externe avec un filtre clause where
Si j'écris un sql:
select *
from a,b
where a.id=b.id(+)
and b.val="test"
et je veux tous les enregistrements à partir d'un endroit où l'enregistrement correspondant dans b n'existe pas ou n'existe val="test", est-ce la bonne question?
Combien de table avez-vous et qu'est ce qu'un.b et c ?
OriginalL'auteur Victor | 2013-08-22
Vous devez vous connecter pour publier un commentaire.
Vous êtes beaucoup mieux à l'aide de la syntaxe ANSI
Vous pouvez faire la même chose à l'aide d'Oracle syntaxe mais ça devient un peu hinkey
Noter que dans les deux cas, je suis ignorant la
c
table puisque vous ne spécifiez pas une condition de jointure. Et je suis en supposant que vous n'avez pas vraiment envie de se joindre A à B puis de générer un produit Cartésien avec C.OriginalL'auteur Justin Cave
Déplacer la condition dans le
JOIN
clause et l'utilisation de la norme ANSI modèle de jointure.OriginalL'auteur Declan_K
OriginalL'auteur santosh
Une JOINTURE EXTERNE GAUCHE est l'une des opérations de JOINTURE qui vous permettent de spécifier une clause de jointure. Il conserve les lignes sans correspondance à partir de la première (à gauche) de la table, se joindre à eux avec une valeur NULL ligne dans la forme de la deuxième (à droite) de la table.
De sorte que vous pouvez le faire comme suit :
SÉLECTIONNEZ
À PARTIR d'une JOINTURE EXTERNE GAUCHE b
SUR un.id = b.id
--Notez que vous avez utilisé des guillemets doubles "test" qui n'est pas utilisé pour varchar en SQL, vous devez utiliser des guillemets simples 'test'
ET b.val = 'test';
OriginalL'auteur Gourabp