JOINTURE ORACLE SQL
Aura_
Messages postés
2
Statut
Membre
-
Reivax962 Messages postés 3742 Statut Membre -
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,
j'ai deux tables A et B, toutes deux avec 4 champs : numero_de_commande, date_debut_commande, date_fin_commande, commentaire.
Ma clé est : numero_de_commande, date_debut_commande, date_fin_commande
Je souhaite récupérer l'ensemble de mes données de la table A, et lorsque ma clé (numero_de_commande, date_debut_commande, date_fin_commande) n'est pas présente dans la table B, je souhaite que mon champs commentaire ajoute par concaténation 'NOT_IN_B'
Mon format final ressemblerait donc a :
121323142 12/08/2018 23/05/2019 COMMANDE SODEXO
120930210 12/06/2019 24/07/2019 COMMANDE ATELIER_NOT_IN_B
Pouvez vous m'aidez ?
J'arrive a voir soit les points communs, soit les différences, mais pas récupérer l'ensemble de A en ajoutant l'information quand la ligne n'est pas dans B...
Merci :)
j'ai deux tables A et B, toutes deux avec 4 champs : numero_de_commande, date_debut_commande, date_fin_commande, commentaire.
Ma clé est : numero_de_commande, date_debut_commande, date_fin_commande
Je souhaite récupérer l'ensemble de mes données de la table A, et lorsque ma clé (numero_de_commande, date_debut_commande, date_fin_commande) n'est pas présente dans la table B, je souhaite que mon champs commentaire ajoute par concaténation 'NOT_IN_B'
Mon format final ressemblerait donc a :
121323142 12/08/2018 23/05/2019 COMMANDE SODEXO
120930210 12/06/2019 24/07/2019 COMMANDE ATELIER_NOT_IN_B
Pouvez vous m'aidez ?
J'arrive a voir soit les points communs, soit les différences, mais pas récupérer l'ensemble de A en ajoutant l'information quand la ligne n'est pas dans B...
Merci :)
3 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
peux-tu nous montrer les syntaxes que tu as utilisées et les résultat obtenus?
je suggère, pour commencer, de faire une jointure à gauche affichant tous les champs des deux tables.
quand cela fonctionnera, il suffira de modifier légèrement cette requête. -
Bonjour,
merci pour votre retour, pour le moment, je n'ai rien a part un left join..
Cordialement -
Bonjour,
Le LEFT JOIN me semble être la bonne approche.
Essaie quelque chose comme ça :SELECT a.*, a.commentaire || CASE WHEN b.numero_de_commande IS NULL THEN 'NOT_IN_B' ELSE '' END as commentaire_modifie FROM a LEFT OUTER JOIN b ON a.numero_de_commande = b.numero_de_commande AND a.date_debut_commande = b.date_debut_commande AND a.date_fin_commande = b.date_fin_commande
Sinon, plutôt que de concaténer en fin de commentaire, tu peux rajouter juste une valeur booléenne (type bit) en mettantCASE WHEN b.numero_de_commande IS NULL THEN 1 ELSE 0 END as not_in_b
, ce sera plus simple à lire programmatiquement..
Xavier