EDIT (RESOLU): Une jointure croisée. Une de ces jointures que vous n'utilisez jamais jusqu'à ce que vous en ayez besoin. Merci pour l'aideJointure à gauche d'une table où les valeurs n'existent pas (et ne sont pas des valeurs NULL)
Table gauche: TS, champ unique avec des valeurs [1,2, ..., 365].
Table droit: PAIEMENT avec trois champs (ID, TS, AMT)
Pour chaque ID, je veux voir 365 enregistrements d'une jointure gauche de TS sur le paiement.
Le problème est que "aucune valeur" n'est identique à une valeur nulle.
Si PAYMENT.TS n'existe pas pour une certaine valeur (par exemple PAYMENT.TS = 4), il n'y a pas de valeur à joindre et la jointure à gauche ne renvoie pas de ligne # 4.
J'ai essayé d'utiliser NOT IN/NOT EXISTS comme condition, mais cela ne traite que le cas où la table de droite a explicitement NULLS et non le cas où aucune valeur n'existe.
Comment procéder? Merci!
(Ceci est un système de DB2)
SELECT * FROM TS LEFT JOIN PAYMENT ON TS = PAYMENT.TS
TS TABLEAU:
| TS |
----------
1
2
...
365
PAIEMENTS TABLEAU:
| ID | TS | PMT |
-----------------------------
1 1 70
1 2 20
1 5 10
2 3 200
RÉSULTAT PRÉVU:
| ID | TS | PMT |
-----------------------------
1 1 70
1 2 20
1 3
1 4
1 5 10
... ...
1 365
2 1
2 2
2 3 200
... ...
2 365
RÉSULTAT RÉEL:
| ID | TS | PMT |
-----------------------------
1 1 70
1 2 20
1 5 10
2 3 200
Ajoutez un exemple de tableau et le résultat attendu. (Comme le texte formaté, pas les images.) – jarlh
Votre description de «aucune valeur» à se joindre n'a pas de sens; une jointure gauche _must_ renvoie tous les enregistrements du côté gauche de la jointure (parfois plus que cela, si la jointure a été réussie). –
@TimBiegeleisen J'ai ajouté un exemple de tableau, pour clarifier la question. THX! – AIS700