OVH Cloud OVH Cloud

doublons

6 réponses
Avatar
arnaud
bonjour,
j'ai une table clients (numcli, nomcli)
par ex,
123 toto
456 tata
123 toto sa

je ne sais pas comment supprimer les doublons sur le numcli.
je voudrais garder seulement la derniere entrée en cas de doublons sur le
numcli
par ex
456 tata
123 toto sa

merci de votre aide
arnaud

6 réponses

Avatar
arnaud
merci
mais je connais cette procédure. je l'utilise.
mais je ne sais pas comment gerer les doublons sur un seul champ !!

"YAD" a écrit dans le message de news:
414ed363$0$2387$
Bonjour,

1) Pour supprimer les doublons, tu peux créer une table temporaire de même
structure que ta table client.

2) Ensuite, tu remplis ta table temporaire à partir de ta table clients en
supprimant les doublons via un "select distinct..."

Avec SqlServer, et très certainement d'autres sgbd, tu peux faire le 1) et
2) en une seule étape via un "select... into <table_temporaire> from...."

Ceci fait, tu supprimes ta table clients, tu renommes ta table temporaire


en
"clients" et surtout tu ajoutes une clef primaire ou un index unique sur


la
colonne "numcli" !

Reste, cependant, que je ne vois pas comment supprimer les doublons en ne
gardant que "la dernière entrée"...

"arnaud" a écrit dans le message de
news:cimi3k$o1b$
> bonjour,
> j'ai une table clients (numcli, nomcli)
> par ex,
> 123 toto
> 456 tata
> 123 toto sa
>
> je ne sais pas comment supprimer les doublons sur le numcli.
> je voudrais garder seulement la derniere entrée en cas de doublons sur


le
> numcli
> par ex
> 456 tata
> 123 toto sa
>
> merci de votre aide
> arnaud
>
>


Avatar
YAD
Bonjour,

1) Pour supprimer les doublons, tu peux créer une table temporaire de même
structure que ta table client.

2) Ensuite, tu remplis ta table temporaire à partir de ta table clients en
supprimant les doublons via un "select distinct..."

Avec SqlServer, et très certainement d'autres sgbd, tu peux faire le 1) et
2) en une seule étape via un "select... into <table_temporaire> from...."

Ceci fait, tu supprimes ta table clients, tu renommes ta table temporaire en
"clients" et surtout tu ajoutes une clef primaire ou un index unique sur la
colonne "numcli" !

Reste, cependant, que je ne vois pas comment supprimer les doublons en ne
gardant que "la dernière entrée"...

"arnaud" a écrit dans le message de
news:cimi3k$o1b$
bonjour,
j'ai une table clients (numcli, nomcli)
par ex,
123 toto
456 tata
123 toto sa

je ne sais pas comment supprimer les doublons sur le numcli.
je voudrais garder seulement la derniere entrée en cas de doublons sur le
numcli
par ex
456 tata
123 toto sa

merci de votre aide
arnaud


Avatar
YAD
mais je ne sais pas comment gerer les doublons sur un seul champ !!



C'est juste !

Si tu peux créer des vues, tu peux sans doute en créer une premiere (V1) qui
serait un "create view V1 as select distinct numcli from client"

Ensuite, une V2 qui serait V1 + nomcli : "create view V2 as select
V1.Numclient, clients.Nomcli from V1 inner join clients on V1.Numcli clients.Numcli"

V2 te donne tes clients sans doublons.

Tu peux ensuite remplir une table temporaire avec V2, virer ta table
clients, et renommer ta table temporaire, puis créer un index unique ou une
clef primaire sur numcli.



"arnaud" a écrit dans le message de
news:cimk2n$p2k$
merci
mais je connais cette procédure. je l'utilise.
mais je ne sais pas comment gerer les doublons sur un seul champ !!

"YAD" a écrit dans le message de news:
414ed363$0$2387$
> Bonjour,
>
> 1) Pour supprimer les doublons, tu peux créer une table temporaire de


même
> structure que ta table client.
>
> 2) Ensuite, tu remplis ta table temporaire à partir de ta table clients


en
> supprimant les doublons via un "select distinct..."
>
> Avec SqlServer, et très certainement d'autres sgbd, tu peux faire le 1)


et
> 2) en une seule étape via un "select... into <table_temporaire>


from...."
>
> Ceci fait, tu supprimes ta table clients, tu renommes ta table


temporaire
en
> "clients" et surtout tu ajoutes une clef primaire ou un index unique sur
la
> colonne "numcli" !
>
> Reste, cependant, que je ne vois pas comment supprimer les doublons en


ne
> gardant que "la dernière entrée"...
>
> "arnaud" a écrit dans le message de
> news:cimi3k$o1b$
> > bonjour,
> > j'ai une table clients (numcli, nomcli)
> > par ex,
> > 123 toto
> > 456 tata
> > 123 toto sa
> >
> > je ne sais pas comment supprimer les doublons sur le numcli.
> > je voudrais garder seulement la derniere entrée en cas de doublons sur
le
> > numcli
> > par ex
> > 456 tata
> > 123 toto sa
> >
> > merci de votre aide
> > arnaud
> >
> >
>
>


Avatar
arnaud
désolé mais ca fonctionne pa !!
"YAD" a écrit dans le message de news:
414ed53f$0$2376$
> mais je ne sais pas comment gerer les doublons sur un seul champ !!

C'est juste !

Si tu peux créer des vues, tu peux sans doute en créer une premiere (V1)


qui
serait un "create view V1 as select distinct numcli from client"

Ensuite, une V2 qui serait V1 + nomcli : "create view V2 as select
V1.Numclient, clients.Nomcli from V1 inner join clients on V1.Numcli > clients.Numcli"

V2 te donne tes clients sans doublons.

Tu peux ensuite remplir une table temporaire avec V2, virer ta table
clients, et renommer ta table temporaire, puis créer un index unique ou


une
clef primaire sur numcli.



"arnaud" a écrit dans le message de
news:cimk2n$p2k$
> merci
> mais je connais cette procédure. je l'utilise.
> mais je ne sais pas comment gerer les doublons sur un seul champ !!
>
> "YAD" a écrit dans le message de news:
> 414ed363$0$2387$
> > Bonjour,
> >
> > 1) Pour supprimer les doublons, tu peux créer une table temporaire de
même
> > structure que ta table client.
> >
> > 2) Ensuite, tu remplis ta table temporaire à partir de ta table


clients
en
> > supprimant les doublons via un "select distinct..."
> >
> > Avec SqlServer, et très certainement d'autres sgbd, tu peux faire le


1)
et
> > 2) en une seule étape via un "select... into <table_temporaire>
from...."
> >
> > Ceci fait, tu supprimes ta table clients, tu renommes ta table
temporaire
> en
> > "clients" et surtout tu ajoutes une clef primaire ou un index unique


sur
> la
> > colonne "numcli" !
> >
> > Reste, cependant, que je ne vois pas comment supprimer les doublons en
ne
> > gardant que "la dernière entrée"...
> >
> > "arnaud" a écrit dans le message de
> > news:cimi3k$o1b$
> > > bonjour,
> > > j'ai une table clients (numcli, nomcli)
> > > par ex,
> > > 123 toto
> > > 456 tata
> > > 123 toto sa
> > >
> > > je ne sais pas comment supprimer les doublons sur le numcli.
> > > je voudrais garder seulement la derniere entrée en cas de doublons


sur
> le
> > > numcli
> > > par ex
> > > 456 tata
> > > 123 toto sa
> > >
> > > merci de votre aide
> > > arnaud
> > >
> > >
> >
> >
>
>


Avatar
Asterix
Normal, la V2 aura des doublons, tout comme la table clients...

Tu utilises quoi comme SGBD ?

"arnaud" a écrit dans le message de
news:cimou0$qsr$
désolé mais ca fonctionne pa !!
"YAD" a écrit dans le message de news:
414ed53f$0$2376$
> > mais je ne sais pas comment gerer les doublons sur un seul champ !!
>
> C'est juste !
>
> Si tu peux créer des vues, tu peux sans doute en créer une premiere (V1)
qui
> serait un "create view V1 as select distinct numcli from client"
>
> Ensuite, une V2 qui serait V1 + nomcli : "create view V2 as select
> V1.Numclient, clients.Nomcli from V1 inner join clients on V1.Numcli > > clients.Numcli"
>
> V2 te donne tes clients sans doublons.
>
> Tu peux ensuite remplir une table temporaire avec V2, virer ta table
> clients, et renommer ta table temporaire, puis créer un index unique ou
une
> clef primaire sur numcli.
>
>
>
> "arnaud" a écrit dans le message de
> news:cimk2n$p2k$
> > merci
> > mais je connais cette procédure. je l'utilise.
> > mais je ne sais pas comment gerer les doublons sur un seul champ !!
> >
> > "YAD" a écrit dans le message de news:
> > 414ed363$0$2387$
> > > Bonjour,
> > >
> > > 1) Pour supprimer les doublons, tu peux créer une table temporaire


de
> même
> > > structure que ta table client.
> > >
> > > 2) Ensuite, tu remplis ta table temporaire à partir de ta table
clients
> en
> > > supprimant les doublons via un "select distinct..."
> > >
> > > Avec SqlServer, et très certainement d'autres sgbd, tu peux faire le
1)
> et
> > > 2) en une seule étape via un "select... into <table_temporaire>
> from...."
> > >
> > > Ceci fait, tu supprimes ta table clients, tu renommes ta table
> temporaire
> > en
> > > "clients" et surtout tu ajoutes une clef primaire ou un index unique
sur
> > la
> > > colonne "numcli" !
> > >
> > > Reste, cependant, que je ne vois pas comment supprimer les doublons


en
> ne
> > > gardant que "la dernière entrée"...
> > >
> > > "arnaud" a écrit dans le message de
> > > news:cimi3k$o1b$
> > > > bonjour,
> > > > j'ai une table clients (numcli, nomcli)
> > > > par ex,
> > > > 123 toto
> > > > 456 tata
> > > > 123 toto sa
> > > >
> > > > je ne sais pas comment supprimer les doublons sur le numcli.
> > > > je voudrais garder seulement la derniere entrée en cas de doublons
sur
> > le
> > > > numcli
> > > > par ex
> > > > 456 tata
> > > > 123 toto sa
> > > >
> > > > merci de votre aide
> > > > arnaud
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Avatar
Eric
Slt.
Tu peux essayer
delete clients t1
where exists ( select 'x'
from clients t2
where t1.numcli = t2.numcli
and t2.rowid > t1.rowid )
c du code Oracle
A voir si cela est traduisible sous ton SGBD

"arnaud" wrote in message
news:cimi3k$o1b$
bonjour,
j'ai une table clients (numcli, nomcli)
par ex,
123 toto
456 tata
123 toto sa

je ne sais pas comment supprimer les doublons sur le numcli.
je voudrais garder seulement la derniere entrée en cas de doublons sur le
numcli
par ex
456 tata
123 toto sa

merci de votre aide
arnaud