Bonjour

J'ai deux tables que je veux joindre avec les données suivantes

Table 1 - colonne et données
id_ajust - num_int - num_tran - num_pds - cod_cons - cod_ges - cod_porte - dat_ref
10002 811 21115 516321 XZS178t ASD34 129 2023-04-16
10003 811 21345 91754 CVB789 123ASD 109 2023-04-16

Table 2 - colonne et données
dat_debut dat_fin num_int num_tran num_pds cod_lien num_pro num_fil
2021-01-12 2079-01-01 811 000023 78965 1 NULL NULL
2021-04-12 2079-01-01 811 21115 516321 NULL NULL 7890
2021-04-12 2079-01-01 811 21115 516321 NULL NULL 7890
2021-01-12 2079-01-01 811 21345 91754 1 4567 890
2021-01-12 2079-01-01 811 21345 91754 1 2345 890
2021-01-12 2079-01-01 811 21345 91754 NULL NULL 9087

Je dois joindre les deux tables, je veux ajouter à la table 1 les données suivantes de la table 2 num_pro et num_fil et les variables suivantes comme jointure num_int, num_tran et num_pds

Je dois sélectionner les données de la façon suivante puisque que j'ai plus qu'un ligne qui se joint à la table 1.
La date_ref (table 1) doit être BETWEEN dat_debut et dat_fin de la table 2.
Le cod_lien (peut être NULL ou 1) je prioriser la valeur 1 et ensuite NULL si aucun de valeur 1 et
ensuite prendre celui qui a le min(num_pro)

Voici la requête que j'ai trouvé jusqu'à maintenant mais elle ne fait pas tout
Je fais la jointure et extrait le cod_lien MAX


Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT DISTINCT mtr.*, tmp.num_pro, tmp.num_fil, tmp.cod_nature_lien
FROM table_2 tmp
RIGHT JOIN table_1 mtr
ON tmp.num_tran = mtr.num_tran
AND tmp.num_int = mtr.num_int
AND tmp.num_pds = mtr.num_pds
AND tmp.cod_lien = (
       SELECT MAX(tmp2.cod_lien)
       FROM table_ 2 tmp2
       WHERE tmp2.num_int = tmp.num_int
       AND tmp2.num_tran= tmp.num_tran
       AND tmp2.num_pds = tmp.num_pds
       GROUP BY tmp2.num_int, tmp2.num_tran, tmp2.num_pds)



Merci de votre aide