Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SUPPRESSION ALEATOIRE

3 réponses
Avatar
Vincent
Bonjour,

j'ai un petit probl=E8me avec SQL SERVEUR 2005 SP2

Avant tout, voici ma d=E9marche:

Je poss=E8de une table "clients" de 300000 entr=E9es sur un serveur
distant. Cette table contient des doublons que je dois traiter
(supprimer un des membres de chaque doublon).

J'ai =E9galement un serveur sur ma machine sur laquelle je vais isoler
les entr=E9es =E0 supprimer.

Je cr=E9er un serveur li=E9 du serveur distant puis je vais une vue de la
table client en local sur ma machine :
CREATE VIEW VCLIENT AS
SELECT * FROM [SERVEUR].[SCHEMA].[PROPRIETAIRE].CLIENTS

J'isole mes mes doublons

SELECT *
INTO DOUBLONS
FROM VCLIENT
WHERE ....( num=E9ro de client pr=E9sent deux fois)

J'ai ma table doulons depuis laquelle j'isole les membre de doublons =E0
supprimer dans une table A_SUPPR. dont je vous passe la requ=EAte

MON PROBLEME intervient lors de la suppression. J'ai tent=E9 la
supression pas la vue de la table Vclient de la table clients en
saisissant la requ=EAte suivante :

DELETE VCLIENT
FROM A_SUPPR
WHERE VCLIENT.NUMCLIENT =3D A_SUPPR.NUMCLIENT

aucun message d'erreur n'aparait et m=EAme mieux, il me donne le nombre
de lignes affect=E9s que j'attendais. Sur 1000 lignes =E0 supprimer, apr=E8s=

v=E9rification, je suis bien a 299000 lignes dans la table "clients" sur
le serveur.

LE GROS PROBLEME est que 800 de mes lignes =E0 supprimer son encore dans
la table CLIENTS. Ma requ=EAte ma traiter que 200 doublons et supprimer
800 lignes n'ayant aucun rapport avec les doublons.


Si quelqu'un a une explication ou peut m'orrienter, je suis preneur
car je n'y comprend plus rien. Je tiens a pr=E8ciser que l'op=E9ration se
d=E9roule correctement en direct sur le serveur.

Cdt

3 réponses

Avatar
Rudi Bruchez
Bonjour,

Vincent a écrit:
LE GROS PROBLEME est que 800 de mes lignes à supprimer son encore dans
la table CLIENTS. Ma requête ma traiter que 200 doublons et supprimer
800 lignes n'ayant aucun rapport avec les doublons.



Essaie plutôt ceci :

DELETE VCLIENT
FROM A_SUPPR s
JOIN VCLIENT c ON c.NUMCLIENT = s.NUMCLIENT

--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
http://www.babaluga.com/
http://rudi.developpez.com/
Avatar
Vincent
On 7 jan, 17:51, Rudi Bruchez <rudi#nospam#at#babaluga.com> wrote:
Bonjour,

Vincent a écrit:

> LE GROS PROBLEME est que 800 de mes lignes à supprimer son encore dans
> la table CLIENTS. Ma requête ma traiter que 200 doublons et supprimer
> 800 lignes n'ayant aucun rapport avec les doublons.

Essaie plutôt ceci :

DELETE VCLIENT
FROM A_SUPPR s
JOIN VCLIENT c ON c.NUMCLIENT = s.NUMCLIENT

--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Serverhttp://www.babalu ga.com/http://rudi.developpez.com/





Il semblerait qu'il n'y ait aucun problème avec ta requête
je ne comprends toujours pas pourquois mon filtre ne fonctionne pas

Merci
Avatar
Rudi Bruchez
Bonjour,

Vincent a écrit:

Il semblerait qu'il n'y ait aucun problème avec ta requête
je ne comprends toujours pas pourquois mon filtre ne fonctionne pas



Dans la requête originale, tu ne précises pas le lien entre les tables.
Je ne sais pas ce que donne ta syntaxe, qqch de plus ou moins aléatoire
? Si tu veux utiliser une syntaxe ansi, tu peux utiliser une
sous-requête avec un IN

DELETE VCLIENT
WHERE NUMCLIENT IN (SELECT NUMCLIENT FROM A_SUPPR)

--
Rudi Bruchez
Consultant independant, MCDBA, MCITP, MCT, MVP SQL Server
http://www.babaluga.com/
http://rudi.developpez.com/