Bonjour à tous, j'aimerais faire une requête qui me permet de rapprocher des personnes, je travail sur deux bases de données différentes, je me connecte sur une et à partir d'un link je peux me connecter sur l'autre.
En gros, il y a des personnes qui existent dans les deux bases, des personnes n'existant que dans la première et des personnes qui n'existent que dans la deuxième. Les translate servent à enlever tous les caractères spéciaux, blancs etc ... Pour que par exemple un Dupond Jean Pierre dans la première base et un Dupond Jean-Pierre dans la deuxième soient egaux car c'est la même personne, ce qui donnera DUPOND JEANPIERRE pour relever l'égalité. J'aimerais les rapprocher de cette façon :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT Translate(Upper(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu'), Translate(Upper(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'), Translate(Upper(base2.NAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'), Translate(Upper(base2.FIRSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') FROM AGENT base1, p_ctc@linkbase1base2 base2 WHERE Translate(Upper(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu') = Translate(Upper(base2.FIRSNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') AND Translate(Upper(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') = Translate(Upper(base2.FIRSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu');
Avec ce que j'ai fait ça marche, maintenant je vais vous faire une batterie de tests pour voir ce que j'aimerais, car actuellement je n'ai pas tous les agents des deux cotés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 BASE1 BASE2 NOM PRENOM NAME FIRSTNAME
Si il y a une case blanche, le nom n'est pas présent dans la base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 BASE1 BASE2 DUPOND JEANPIERRE DUPOND JEANPIERRE DUPONT MARC CLAVIER CHRISTIAN
Voila j'espère que c'est compréhensible. Merci.
Partager