Recherche requête SQL ...

Fermé
saby - 10 août 2004 à 12:13
Cyber Liz Messages postés 64 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 18 août 2004 - 10 août 2004 à 19:36
Bonjour,

J'ai besoin de faire du dédoublonnage d'enregistrements à partir de deux tables différentes.

Pour être un peu plus précise, il s'agit de bases comprenant des coordonnées de sociétés et diverses informations complémentaires. Certains des enregistrements de la première base ont déjà été travaillés, la seconde base vient d'être créée à partir de nouveaux fichiers mais elle contient entre autres les mêmes entreprises que la première base et il faut en retirer celles qui sont en commun et qui répondent à un certain critère (le critère (APPELS2.STATUS)=4 dans la requête ci-dessous)

Pour effectuer ma requête, je fais un test sur les champs "raison sociale" de chacune des deux tables, ainsi que le numéro de téléphone et le code APE.

Mon souci est de retrouver ces doublons dans certains cas : la raison sociale, pour les deux tables, se compose de deux champs.
Sur ma seconde table, j'ai vu que dans certains cas, la raison sociale avait été "coupée en deux" alors que dans la première elle n'était indiquée que dans le premier champ raison sociale.

Je ne suis pas sure d'avoir été bien claire ... En gros, ce que je cherche à savoir, c'est s'il y a un moyen de comparer mes champs de raisons sociales entre ces deux tables, sachant qu'il y a en fait 4 champs à comparer, soit 2 dans chaque table.

Par exemple :
Table CLIENTS - Raison Sociale 1 : Mairie de Paris
Table CLIENTS - Raison Sociale 2 :
Table CLIENTS2 - Raison Sociale 1 : Mairie de
Table CLIENTS2 - Raison Sociale 2 : Paris

Parfois, un mot de la raison sociale est même inscrit sur les deux champs, ce qui facilite encore moins les choses ...
Par exemple :
Table CLIENTS - Raison Sociale 1 : Mairie de Paris
Table CLIENTS - Raison Sociale 2 :
Table CLIENTS2 - Raison Sociale 1 : Mairie de
Table CLIENTS2 - Raison Sociale 2 : de Paris

Ma requête ressemble pour l'instant à ça et me modifie déjà une bonne partie des enregistrements dont j'ai besoin mais je sais qu'il en manque d'autres, à cause de ce problème de champs "raison sociale" :

UPDATE CLIENTS, APPELS2 INNER JOIN CLIENTS2 ON APPELS2.INDICE = CLIENTS2.indice SET CLIENTS.ETAT = "RDVOUI"
WHERE (((CLIENTS.COMPANY)=[CLIENTS2]![COMPANY]) AND ((APPELS2.STATUS)=4) AND ((CLIENTS2.SECTEUR) Like "*biechy*") AND ((CLIENTS.TELEPHONE)=[CLIENTS2]![TELEPHONE]));

Si j'ai été claire, quelqu'un sait-il comment je pourrais m'y prendre ?
Si je n'ai pas été claire, je peux tenter de réexpliquer :)

Il y a plus de 100000 enregistrements dans la base initiale et je ne me vois vraiment pas les lire à la main ...

Et une deuxième question ... comment puis-je modifier des champs du type "xx.xx.xx.xx.xx" en "xxxxxxxxxx", soit en gros, retirer les points ? Je débute à peine en SQL et je me rends bien compte que je pourrais utiliser SUBSTR pour extraire mes caractères à garder mais je ne sais pas comment faire pour remplacer des caractères, ici les ".".

Merci!

1 réponse

Cyber Liz Messages postés 64 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 18 août 2004 50
10 août 2004 à 19:36
Bonjour,

Tu travailles avec quel type de base? MySQL? Oracle?

Pour répondre à ta deuxième question, tu peux remplacer les points par une chaîne vide avec la fontion :
REPLACE(str,from_str,to_str)
Returns the string str with all occurrences of the string from_str replaced by the string to_str.
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwww.mysql.com'

Tu dois être un peu plus précise sur ton type de base, le langage que tu utilise (pas seulement du SQL?)

Vive le Québec libre! Et oui, je suis québécoise...
0