MaRTy59 | 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.
Code :
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');
|
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 :
- BASE1 BASE2
- NOM PRENOM NAME FIRSTNAME
|
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 :
- BASE1 BASE2
- DUPOND JEANPIERRE DUPOND JEANPIERRE
- DUPONT MARC
- CLAVIER CHRISTIAN
|
Si il y a une case blanche, le nom n'est pas présent dans la base.
En cherchant, j'ai essayé de le faire mais j'ai une erreur ...
"la commande sql ne se termine pas correctement"
Code :
SELECT base1.NOM, base1.PRENOM, base1.DEPART, Translate(Upper(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu'), Translate(Upper(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'), base2.NAME, base2.FIRSTNAME, base2.VALIDPNT, Translate(Upper(base2.NAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'), Translate(Upper(base2.FIRSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') FROM AGENT base1 FULL OUTER JOIN p_ctc@linkbase1base2 base2 ON Translate(Upper(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu') = Translate(Upper(base2.FIRSNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') AND Translate(Upper(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') = Translate(Upper(base2.FIRSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu');
|
J'espère que c'est compréhensible merci de votre aide. |