Left outer join (jointure entre trois tables)?
J'ai une table principale que je dois récupérer des données. J'ai une jointure externe gauche où les champs correspondent à 40% du temps. Et puis j'ai une autre jointure où j'ai besoin de faire correspondre les données de la table A avec.
C'est le SQL en pseudo code. Cette requête ne fonctionne pas.
-- C'est la partie que je veux faire, mais ne fonctionne pas.
ET H. COL3 = A. ÉTAT????
Je suis en train de travailler avec IBM DB2.
SELECT DISTINCT
APP_NO as app_no,
A.STATE as state
...
... Fields
...
FROM
TABLE_A A
LEFT OUTER JOIN
TABLE_B HIST
ON
HIST.COL1 = A.COL1
, TABLE_C B
LEFT OUTER JOIN
TABLE_D H
ON
H.COL2 = B.COL2
-- This is the part I want to do but doesn't work.
AND
H.COL3 = A.STATE????
WHERE
A.BRANCH = 'Data'
- pourquoi il ne marche pas de travail? Quelles erreurs avez-vous?
- Dans DB2, j'obtiens l'erreur suivante. Si je supprime la ligne incriminée, alors cela fonctionne. Erreur: SQL0338N Une clause associé à un opérateur de JOINTURE ou dans une instruction MERGE n'est pas valide. SQLSTATE=42972 (État:42972, Code Natif: FFFFFEAE)
- S'il vous plaît aller à travers ce lien. techpint.com/programming/how-sql-joins-works. J'ai montré un exemple avec un script inclus. Il contient exactement le même cas que vous vous posez.
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pouvez ré-écrire comme ça (mais j'ai peut être la lecture de votre relevé de mal)
Aussi, IBM doco sur ce message d'erreur indique:
Une clause associé à un opérateur de JOINTURE ou dans une instruction MERGE n'est pas valide.
Explication:
Les références de colonne dans une clause ne doit faire référence à des colonnes de tables qui sont dans le champ d'application de la clause.
J'ai donc pu se tromper, il semble juste comme la faux SUR la clause lorsque extérieur de rejoindre "H. COL3 = A. ÉTAT" est hors de portée de la clause parce que la table n'est pas dans le champ d'application.
Qu'advient-il si vous mettez le "ET H. COL3 = A. ÉTAT" dans votre clause where?