OVH Cloud OVH Cloud

Contrôle de doublon

6 réponses
Avatar
Bonjour
Je souhaite empêcher l'insertion d'un client dans la base si un nom
similaire existe déjà :
ex: ne pas pouvoir saisir "PEUGEOT S.A." si "PEUGEOT" existe et vice versa.

Select @doublon = count (idClient)
From Client
Where raisonSociale like '%' + @raisonSociale + '%'
or @raisonSociale like '%' + raisonSociale + '%'

fait planter le serveur au bout d'un moment.

Help please !!!
Merci

6 réponses

Avatar
Tamahome
"Bonjour" a écrit dans le message de
news:
Je souhaite empêcher l'insertion d'un client dans la base si un nom
similaire existe déjà :
ex: ne pas pouvoir saisir "PEUGEOT S.A." si "PEUGEOT" existe et vice


versa.

Select @doublon = count (idClient)
From Client
Where raisonSociale like '%' + @raisonSociale + '%'
or @raisonSociale like '%' + raisonSociale + '%'

fait planter le serveur au bout d'un moment.

Help please !!!
Merci



Utilises tu un curseur (coté server) ? Fermes tu bien ta connexion a la fin
de ta requete ?
Avatar
Bonjour
Merci de ta suggestion.
Je n'ai pas de curseur, et j'ai vérifié que la connexion est bien fermée
après l'exécution de ma procédure.


"Tamahome" a écrit dans le message de
news:40e569fd$0$29380$
"Bonjour" a écrit dans le message de
news:
> Je souhaite empêcher l'insertion d'un client dans la base si un nom
> similaire existe déjà :
> ex: ne pas pouvoir saisir "PEUGEOT S.A." si "PEUGEOT" existe et vice
versa.
>
> Select @doublon = count (idClient)
> From Client
> Where raisonSociale like '%' + @raisonSociale + '%'
> or @raisonSociale like '%' + raisonSociale + '%'
>
> fait planter le serveur au bout d'un moment.
>
> Help please !!!
> Merci

Utilises tu un curseur (coté server) ? Fermes tu bien ta connexion a la


fin
de ta requete ?




Avatar
Bonjour
Merci de ton idée : je commence les tests !

"Pierre" a écrit dans le message de
news:
Vérifier la combinaison des ''.
logiquement le partie like doit être transmise au serveur avec cette


syntaxe like
'%TOTO%' . étant donné la présente du paramètres raison sociale, on


pourrait avoir une syntaxe qui ressemble à ceci ''%' + @toto + '%''
il faudrait faire des test pour trouver la bonne combinaison.
Courage.

"Bonjour" a écrit :

> Je souhaite empêcher l'insertion d'un client dans la base si un nom
> similaire existe déjà :
> ex: ne pas pouvoir saisir "PEUGEOT S.A." si "PEUGEOT" existe et vice


versa.
>
> Select @doublon = count (idClient)
> From Client
> Where raisonSociale like '%' + @raisonSociale + '%'
> or @raisonSociale like '%' + raisonSociale + '%'
>
> fait planter le serveur au bout d'un moment.
>
> Help please !!!
> Merci
>
>
>


Avatar
Bonjour
C'est trop bizarre !
Je n'ai pas d'erreur avec l'analyseur de requêtes !

Declare @rs nvarchar (50)
Select @rs = 'airbus sa'

Select *
From Client
Where lower (raisonSociale) like '%' + lower (@rs) + '%'
or lower (@rs) like '%' + lower (raisonSociale) + '%'



"Bonjour" a écrit dans le message de
news:uNx%
Merci de ton idée : je commence les tests !

"Pierre" a écrit dans le message de
news:
> Vérifier la combinaison des ''.
> logiquement le partie like doit être transmise au serveur avec cette
syntaxe like
> '%TOTO%' . étant donné la présente du paramètres raison sociale, on
pourrait avoir une syntaxe qui ressemble à ceci ''%' + @toto + '%''
> il faudrait faire des test pour trouver la bonne combinaison.
> Courage.
>
> "Bonjour" a écrit :
>
> > Je souhaite empêcher l'insertion d'un client dans la base si un nom
> > similaire existe déjà :
> > ex: ne pas pouvoir saisir "PEUGEOT S.A." si "PEUGEOT" existe et vice
versa.
> >
> > Select @doublon = count (idClient)
> > From Client
> > Where raisonSociale like '%' + @raisonSociale + '%'
> > or @raisonSociale like '%' + raisonSociale + '%'
> >
> > fait planter le serveur au bout d'un moment.
> >
> > Help please !!!
> > Merci
> >
> >
> >




Avatar
Pierre
Normal, avec l'analyseur de requete, ta requête est exécutée directement alors que dans une application, tu transmets un string entre "" et tu es obligé d'assurer une gestion intelligente des ''.

"Bonjour" a écrit :

C'est trop bizarre !
Je n'ai pas d'erreur avec l'analyseur de requêtes !

Declare @rs nvarchar (50)
Select @rs = 'airbus sa'

Select *
From Client
Where lower (raisonSociale) like '%' + lower (@rs) + '%'
or lower (@rs) like '%' + lower (raisonSociale) + '%'



"Bonjour" a écrit dans le message de
news:uNx%
> Merci de ton idée : je commence les tests !
>
> "Pierre" a écrit dans le message de
> news:
> > Vérifier la combinaison des ''.
> > logiquement le partie like doit être transmise au serveur avec cette
> syntaxe like
> > '%TOTO%' . étant donné la présente du paramètres raison sociale, on
> pourrait avoir une syntaxe qui ressemble à ceci ''%' + @toto + '%''
> > il faudrait faire des test pour trouver la bonne combinaison.
> > Courage.
> >
> > "Bonjour" a écrit :
> >
> > > Je souhaite empêcher l'insertion d'un client dans la base si un nom
> > > similaire existe déjà :
> > > ex: ne pas pouvoir saisir "PEUGEOT S.A." si "PEUGEOT" existe et vice
> versa.
> > >
> > > Select @doublon = count (idClient)
> > > From Client
> > > Where raisonSociale like '%' + @raisonSociale + '%'
> > > or @raisonSociale like '%' + raisonSociale + '%'
> > >
> > > fait planter le serveur au bout d'un moment.
> > >
> > > Help please !!!
> > > Merci
> > >
> > >
> > >
>
>





Avatar
Bonjour
En fait, j'avais oublié une jointure avec une autre table, ce qui faisait
que ma requête ernvoyait un très grand nombre de lignes.
Mais il n'y aucune subtilité avec les ""
:-)


"Pierre" a écrit dans le message de
news:
Normal, avec l'analyseur de requete, ta requête est exécutée directement


alors que dans une application, tu transmets un string entre "" et tu es
obligé d'assurer une gestion intelligente des ''.

"Bonjour" a écrit :

> C'est trop bizarre !
> Je n'ai pas d'erreur avec l'analyseur de requêtes !
>
> Declare @rs nvarchar (50)
> Select @rs = 'airbus sa'
>
> Select *
> From Client
> Where lower (raisonSociale) like '%' + lower (@rs) + '%'
> or lower (@rs) like '%' + lower (raisonSociale) + '%'
>
>
>
> "Bonjour" a écrit dans le message


de
> news:uNx%
> > Merci de ton idée : je commence les tests !
> >
> > "Pierre" a écrit dans le message de
> > news:
> > > Vérifier la combinaison des ''.
> > > logiquement le partie like doit être transmise au serveur avec cette
> > syntaxe like
> > > '%TOTO%' . étant donné la présente du paramètres raison sociale, on
> > pourrait avoir une syntaxe qui ressemble à ceci ''%' + @toto + '%''
> > > il faudrait faire des test pour trouver la bonne combinaison.
> > > Courage.
> > >
> > > "Bonjour" a écrit :
> > >
> > > > Je souhaite empêcher l'insertion d'un client dans la base si un


nom
> > > > similaire existe déjà :
> > > > ex: ne pas pouvoir saisir "PEUGEOT S.A." si "PEUGEOT" existe et


vice
> > versa.
> > > >
> > > > Select @doublon = count (idClient)
> > > > From Client
> > > > Where raisonSociale like '%' + @raisonSociale + '%'
> > > > or @raisonSociale like '%' + raisonSociale + '%'
> > > >
> > > > fait planter le serveur au bout d'un moment.
> > > >
> > > > Help please !!!
> > > > Merci
> > > >
> > > >
> > > >
> >
> >
>
>
>