Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
AlbanMONTBILLIARD
Contributor II
Contributor II

Récupération des données d'une table avec une clause where not in

Bonjour, 

j'ai besoin de vos lumières car les miennes faiblissent ...

Je tente de récupérer des données d'une table qui n'existe pas dans une deuxième. En sql cela donnerait un truc de ce genre : 

SELECT DISTINCT mat_long, mat_court, mois_ref, num_evt
FROM z_qlik_paie
WHERE (mat_long, mois_ref) NOT IN (SELECT matricule, mois_absence FROM z_qlik_absence_agent)
ORDER BY mat_court, mois_ref;

Sachant que les tables z_qlik_paie et z_qlik_absence_agent sont chargés dans une première applications et sauvegarder en .QVD.
Dans un second temps, je charge le contenu du QVD contenant les données de la table z_qlik_absence_agent puis je souhaiterais chargé le contenu ne faisant pas doublons en provenance du QVD contenant la table z_qlik_paie. Comment faire ?

 

Merci de votre aide et n'hésitez pas à me demander des précisions si ce n'est pas clair.

3 Replies
Taoufiq_Zarra

BOnjour @AlbanMONTBILLIARD ,

 

avec un exemple de données c'est plus simple de répondre,

mais je te propose déjà de tester where not exists() sur les tables que tu as déjà chargé en mémoire

aide sur la fonction Exist ici

Regards,
Taoufiq ZARRA

"Please LIKE posts and "Accept as Solution" if the provided solution is helpful "

(you can mark up to 3 "solutions") 😉
AlbanMONTBILLIARD
Contributor II
Contributor II
Author

Bonjour, 

réponse un peu tardive car je n'ai pas eu le temps de m'en occuper. D'abord merci pour la fonction mais a priori je dois pas être doué, je n'arrive pas à mettre en application. 

Pour les données c'est pas évident car ce sont des données confidentielles. Je mets ci-dessous le script que j'utilise :

TEMP:
LOAD
MOIS_REF & '|' & MAT_LONG as CLE_AGENT8,
MOIS_REF & '|' & MAT_COURT as CLE_AGENT5,
makedate(left(Num(MOIS_REF),4),right(Num(MOIS_REF),2),1) as DATE,
MAT_COURT as MATRICULE,
NUM_EVT
FROM [lib://Donnée Ciril RH (caluire_amd)/SQL_PAIE.qvd](qvd);

DONNEE_ABS:
LOAD
CODE_ABSENCE,
MOIS_ABSENCE & '|' & MATRICULE as CLE_AGENT8,
MOIS_ABSENCE & '|' & right(MATRICULE,5) as CLE_AGENT5,
makedate(left(Num(MOIS_ABSENCE),4),right(Num(MOIS_ABSENCE),2),1) as DATE,
text(right(MATRICULE,5)) as MATRICULE,
MOIS_ABSENCE,
NBR_JOU_ABS,
NUM_EVT
FROM [lib://Donnée Ciril RH (caluire_amd)/SQL_ABSENCE.qvd]
(qvd);

left join(DONNEE_ABS)
load
CLE_AGENT8,
CLE_AGENT5,
DATE,
MATRICULE,
NUM_EVT
resident TEMP
WHERE not exists(CLE_AGENT8);

drop table TEMP;

AlbanMONTBILLIARD
Contributor II
Contributor II
Author

Le problème est que la table TEMP se charge bien (plus d'1 million de ligne) puis la table DONNEE_ABS se charge également (6190 lignes) mais lorsque je tente d'ajouter les lignes présentes dans la table TEMP et absente de la table DONNEE_ABS à la table DONNEE_ABS, aucune ligne ne s'ajoute.