Ciao a tutti
devo fare un operazione per eliminare dei duplicati da una tabella che si chiama document
nella quale ho i seguenti elementi importanti
Id,Libelle,UserID,DossierId,Size
qui trovate un immagine
http://www.cyberkings.it/Stack/doc.jpg La tabella a sua volta é collegata alla tabella AccesDocument che ID e DocumentId
questa a sua volta é collegata HistoriqueAccesDocumentche ha ID e AccesDocumentId
cosa devo fare io, eliminare dei duplicati dalla tabella document
Ho dei record duplicati che posso trovare andando a fare una select per verificare tutti quelli che hanno
Libelle,UserID e DossierId uguali
da questi poi voglio eliminare tutti quelli che hanno size 0
per fare questo avevo scritto questo
delete from Document WHERE EXISTS (select Libelle from (SELECT Libelle,UserID,DossierId,ROW_NUMBER() OVER(PARTITION by Libelle,UserID,DossierId ORDER BY Libelle)
AS duplicateRecCount
FROM dbo.Document
where UserID is not NULL and DossierId is not NULL ) as TempTab1 where Document.Libelle = TempTab1.Libelle and Document.UserID = TempTab1.UserID and Document.DossierId = TempTab1.DossierId and duplicateRecCount > 1 ) and Size =0
se la eseguo come select funziona tutto
delete AccesDocument
FROM [Document] INNER JOIN
AccesDocument ON [Document].Id = AccesDocument.DocumentId
WHERE EXISTS
(SELECT Libelle
FROM (SELECT Libelle, UserID, DossierId, ROW_NUMBER() OVER (PARTITION BY Libelle, UserID, DossierId
ORDER BY Libelle) AS duplicateRecCount
FROM dbo.Document
WHERE UserID IS NOT NULL AND DossierId IS NOT NULL) AS TempTab1
WHERE Document.Libelle = TempTab1.Libelle AND Document.UserID = TempTab1.UserID AND Document.DossierId = TempTab1.DossierId AND duplicateRecCount > 1) AND Size = 0
ma la delete non va perchè la tabella AccesDocument la blocca
Sono quindi riuscito a fare una delete per cancellare anche AccesDocument ma questa a sua volta é bloccata da HistoriqueAccesDocumentche
ecco intanto non riesco ora a fare un delete su HistoriqueAccesDocumentche, ma più che altro vorrei dare u n ordine alle cose anche per evitare che una delete finisca prima e blocchi poi il resto