comparaison

Le
Hamet
Bonjour
J'ai un petit soucis sql
J'ai une table A sur une base et une table B sur une autre base d'un autre
serveur.
Quotidiennement je dois envoyer des enregistrements de A vers B.
Cependant si l'enregistrement est déja dans B je ne dois pas l'envoyer.
Il n'y a pas id commun entre les deux tables. Donc je me dis que 2
enregistrements sont egal s'ils ont le même nom, la même ville, le même code
postal et le même telephone.
la requête d'export est la suivante :
SELECT ex.idAgence




FROM A WITH(NOLOCK) AS ex left join



agence AS ag ON ex.idAgence WITH(NOLOCK) = ag.idagence



WHERE



/* hamet le 13/03/2007 exclure les enregitrements qui on la même raison
social,ville ,cp, telephone que dans carim*/



rtrim(ltrim(isnull(replace(replace( ag.nom_prim ,',',''),'''',''),'') +
isnull(ag.tel_prim,'') +
isnull(replace(replace(replace(ag.ville_prim,nchar(13),' '),nchar(10),'')
,',',''),'') + isnull(ag.cp_prim,''))) not in (



select (rtrim(ltrim(isnull(replace(replace(replace(company_name,nchar(13),'
'),nchar(10),'') ,',','') ,'')) COLLATE SQL_Latin1_General_CP1_CI_AI +



isnull('0' + RTRIM(LTRIM(substring( phone,8,10))),'') COLLATE
SQL_Latin1_General_CP1_CI_AI +



isnull(replace(replace(replace(A_ville,nchar(13),' '),nchar(10),'')
,',',''),'') COLLATE SQL_Latin1_General_CP1_CI_AI))



from B WITH(NOLOCK)



)



ag.cp_prim != zip COLLATE SQL_Latin1_General_CP1_CI_AI

Pouvez-vous me dire si cela peut marcher ou s'il y a une meilleur solution ?

Merci
Hamet
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Hamet
Le #11840681
Merci j'ai trouvé, j'avais un problème de formatage de mes numéro de
téléphone. Qui n'était pas au même format.
Hamet

"Hamet" a écrit :

Bonjour
J'ai un petit soucis sql
J'ai une table A sur une base et une table B sur une autre base d'un autre
serveur.
Quotidiennement je dois envoyer des enregistrements de A vers B.
Cependant si l'enregistrement est déja dans B je ne dois pas l'envoyer.
Il n'y a pas id commun entre les deux tables. Donc je me dis que 2
enregistrements sont egal s'ils ont le même nom, la même ville, le même code
postal et le même telephone.
la requête d'export est la suivante :
SELECT ex.idAgence




FROM A WITH(NOLOCK) AS ex left join



agence AS ag ON ex.idAgence WITH(NOLOCK) = ag.idagence



WHERE



/* hamet le 13/03/2007 exclure les enregitrements qui on la même raison
social,ville ,cp, telephone que dans carim*/



rtrim(ltrim(isnull(replace(replace( ag.nom_prim ,',',''),'''',''),'') +
isnull(ag.tel_prim,'') +
isnull(replace(replace(replace(ag.ville_prim,nchar(13),' '),nchar(10),'')
,',',''),'') + isnull(ag.cp_prim,''))) not in (



select (rtrim(ltrim(isnull(replace(replace(replace(company_name,nchar(13),'
'),nchar(10),'') ,',','') ,'')) COLLATE SQL_Latin1_General_CP1_CI_AI +



isnull('0' + RTRIM(LTRIM(substring( phone,8,10))),'') COLLATE
SQL_Latin1_General_CP1_CI_AI +



isnull(replace(replace(replace(A_ville,nchar(13),' '),nchar(10),'')
,',',''),'') COLLATE SQL_Latin1_General_CP1_CI_AI))



from B WITH(NOLOCK)



)



ag.cp_prim != zip COLLATE SQL_Latin1_General_CP1_CI_AI

Pouvez-vous me dire si cela peut marcher ou s'il y a une meilleur solution ?

Merci
Hamet



Publicité
Poster une réponse
Anonyme