Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Essaie plutôt celui là :
CLIENTS:
LOAD
ID AS F_IDT_CLIENT, *;
LOAD * INLINE [
ID, NOM
1, aa
2, bb
3, cc
4, dd
]
;
MAILS:
LOAD * INLINE [
id_MAIL, EMAIL, DT_DER_UTI, F_IDT_CLIENT
7, aa_ole.com, 05/05/2019, 1
9, bb_ole.com, 09/09/2019, 2
74, cc_tyty.fr, 01/02/2017, 3
5, bbbbb_tyty.fr, 01/01/2018, 2
]
;
// Une table intermédaire avec Mails récents
INNER JOIN(MAILS)
LOAD
F_IDT_CLIENT,
Max(DT_DER_UTI) AS DT_DER_UTI
RESIDENT MAILS
GROUP BY F_IDT_CLIENT;
// Table finale
LEFT JOIN(CLIENTS)
LOAD *
RESIDENT MAILS;
DROP TABLE MAILS;
cordialement.
Bonjour ,
Ma problématique est simple, mais j'arrive pas à la résoudre dans QS.
J'ai deux tables
CLIENT
ID | NOM |
1 | aa |
2 | bb |
3 | cc |
4 | dd |
id_MAIL | DT_DER_UTI | F_IDT_CLIENT | |
7 | aa_ole.com | 05/05/2019 | 1 |
9 | bb_ole.com | 09/09/2019 | 2 |
74 | cc_tyty.fr | 01/02/2017 | 3 |
5 | bbbbb_tyty.fr | 01/01/2018 | 2 |
et je souhaite avoir une table de jointure avec chaque fois l'email le plus à jour pour chaque client (s'il existe)
ici pour le client bb , je récupère email ayant le F_IDT_CLIENT correspondant et la DT_DER_UTI la plus recente.
ID_CLIENT | NOM | id_MAIL | DT_DER_UTI | F_IDT_CLIENT | |
1 | aa | 7 | aa_ole.com | 05/05/2019 | 1 |
2 | bb | 9 | bb_ole.com | 09/09/2019 | 2 |
3 | cc | 74 | cc_tyty.fr | 01/02/2017 | 3 |
4 | dd |
Merci par avance de votre aide
Bonjour,
Il te faut utiliser un MAX avec un GROUP BY sur ta table des mails avant d'effectuer ta jointure. Essaie le script ci-dessous:
// Chargement table client
CLIENT:
LOAD
ID AS ID_CLIENT,
Nom
FROM <chemin_acces_source>;
// Chargement de la table avec le max
LEFT JOIN(CLIENT)
LOAD
Max(DT_DER_UTI) AS DT_DER_UTI,
id_mail,
EMAIL,
F_IDT_CLIENT AS ID_CLIENT
FROM <chemin_acces_source>
GROUP BY F_IDT_CLIENT, id_mail, EMAIL;
cordialement.
merci seiko,
Mais je n'ai pas le résultat attendu
Pour le client bb , je souhaite avoir qu'une seule ligne (cf pj en jaune)
Essaie plutôt celui là :
CLIENTS:
LOAD
ID AS F_IDT_CLIENT, *;
LOAD * INLINE [
ID, NOM
1, aa
2, bb
3, cc
4, dd
]
;
MAILS:
LOAD * INLINE [
id_MAIL, EMAIL, DT_DER_UTI, F_IDT_CLIENT
7, aa_ole.com, 05/05/2019, 1
9, bb_ole.com, 09/09/2019, 2
74, cc_tyty.fr, 01/02/2017, 3
5, bbbbb_tyty.fr, 01/01/2018, 2
]
;
// Une table intermédaire avec Mails récents
INNER JOIN(MAILS)
LOAD
F_IDT_CLIENT,
Max(DT_DER_UTI) AS DT_DER_UTI
RESIDENT MAILS
GROUP BY F_IDT_CLIENT;
// Table finale
LEFT JOIN(CLIENTS)
LOAD *
RESIDENT MAILS;
DROP TABLE MAILS;
cordialement.
merci Seyko cela fonctionne