Skip to main content
Announcements
NEW Customer Portal: Initial launch will improve how you submit Support Cases. FIND OUT MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
willydev
Contributor II
Contributor II

jointure sur 2 tables avec date derniere utilisation

 
1 Solution

Accepted Solutions
Seyko
Partner - Creator
Partner - Creator

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.

Excuse my english, i'm french!

View solution in original post

6 Replies
willydev
Contributor II
Contributor II
Author

Bonjour ,

Ma problématique est simple, mais j'arrive pas à la résoudre dans QS.

J'ai deux tables

CLIENT

IDNOM
1aa
2bb
3cc
4dd

 

MAIL

id_MAILEMAILDT_DER_UTIF_IDT_CLIENT
7aa_ole.com05/05/20191
9bb_ole.com09/09/20192
74cc_tyty.fr01/02/20173
5bbbbb_tyty.fr01/01/20182

 

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_CLIENTNOMid_MAILEMAILDT_DER_UTIF_IDT_CLIENT
1aa7aa_ole.com05/05/20191
2bb9bb_ole.com09/09/20192
3cc74cc_tyty.fr01/02/20173
4dd    

 

Merci par avance de votre aide

Seyko
Partner - Creator
Partner - Creator

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.

Excuse my english, i'm french!
willydev
Contributor II
Contributor II
Author

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)

Seyko
Partner - Creator
Partner - Creator

Je vais le tester et faire des ajustements. Il n'a pas fonctionné.
PS : C'est Seyko 🙂
Excuse my english, i'm french!
Seyko
Partner - Creator
Partner - Creator

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.

Excuse my english, i'm french!
willydev
Contributor II
Contributor II
Author

merci Seyko cela fonctionne