SQL - ELIMINAR DUPLICIDAD CLAVE COMPUESTA !URGENTE!

 
Vista:

ELIMINAR DUPLICIDAD CLAVE COMPUESTA !URGENTE!

Publicado por Ronald (4 intervenciones) el 24/03/2006 20:23:52
Mi problema es el siguiente, definieron una tabla sin claves e ingresaron los datos (EN ACCESS), importe la tabla a SQL, al definir las claves arroja un error pues hay una gran cantidad de combinaciones duplicadas, es una tabla de ingredientes de recetas en la cual se repiten los ingredientes en la misma receta, la tabla es DETALLEINGRE, los campos son IdReceta, IdIngre, Cantidad, la clave esta compuesta por los dos primeros campos, les gradeceria mucho que me ayuden a solucionar esto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ELIMINAR DUPLICIDAD CLAVE COMPUESTA !URGENTE!

Publicado por Niva (1 intervención) el 25/03/2006 00:03:58
puedes hacer un select distinct de la tabla que dices y guardarlo en una tabla temporal
luego eliminar la info de la tabla que te esta dando problemas y reemplazarla con la data de la tabla temporal y eso seria todo

si hay tablas relacionadas ya se complica la cosa solo un tantito, pero puede quitar las relaciones que te den problemas y realizar el mismo procedimiento anterior y luego reponer las relaciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ELIMINAR DUPLICIDAD CLAVE COMPUESTA !URGENTE!

Publicado por Isaías (5072 intervenciones) el 27/03/2006 18:28:31
Te anexo la rutina para SQL SERVER:

DECLARE @col1 SMALLINT, @col2 INT, @dupcnt INT
declare dups cursor for
SELECT MyCol1, MyCol2, (count(*) - 1) as Duplicates
FROM MyTabla
GROUP BY MyCol1, Mycol2
HAVING count(*) > 1 order by MyCol1, MyCol2

-- Abro mi cursor
OPEN dups
-- Entro al ciclo
WHILE(1=1)
BEGIN
FETCH NEXT FROM dups INTO @col1, @col2, @dupcnt
IF (@@fetch_status < 0)
BREAK -- Rompo el Ciclo
SET rowcount @dupcnt
DELETE MyTabla WHERE MyCol1 = @col1 and MyCol2 = @col2
END
-- Quito mi cursor de la memoria
DEALLOCATE dups
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ELIMINAR DUPLICIDAD CLAVE COMPUESTA !URGENTE!

Publicado por Isaías (5072 intervenciones) el 28/03/2006 02:50:06
Te anexo la rutina para SQL SERVER:

DECLARE @col1 SMALLINT, @col2 INT, @dupcnt INT
declare dups cursor for
SELECT MyCol1, MyCol2, (count(*) - 1) as Duplicates
FROM MyTabla
GROUP BY MyCol1, Mycol2
HAVING count(*) > 1 order by MyCol1, MyCol2

-- Abro mi cursor
OPEN dups
-- Entro al ciclo
WHILE(1=1)
BEGIN
FETCH NEXT FROM dups INTO @col1, @col2, @dupcnt
IF (@@fetch_status < 0)
BREAK -- Rompo el Ciclo
SET rowcount @dupcnt
DELETE MyTabla WHERE MyCol1 = @col1 and MyCol2 = @col2
END
-- Quito mi cursor de la memoria
DEALLOCATE dups
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias

Publicado por Ronald (4 intervenciones) el 29/03/2006 23:44:49
Muchas gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar