Eliminar duplicados ojala solo fuera eso!!

03/12/2007 - 15:17 por gandy | Informe spam
Hola, primero perdonar mi negación para la expresión escrita...

Colate es así; [tempo], [stampo], [nome_prodotto], [id_h],
[tempo_preparazione_s], [num_extra_time], [err_in_colata_prec], [barcode],
[tempo_ricetta], [num_macchina], [num_testa], [num_prog], [num_col_mac],
[num_col_tes], [port_iso_set], [port_pol1_set], [port_pol2_set],
[port_cat_set], [pres_iso_set], [pres_pol1_set], [pres_pol2_set],
[pres_cat_set], [temp_iso_set], [temp_pol1_set], [temp_pol2_set],
[temp_cat_set], [peso_col_set], [port_iso_real], [port_pol1_real],
[port_pol2_real], [port_cat_real], [pres_iso_real], [pres_pol1_real],
[pres_pol2_real], [pres_cat_real], [temp_iso_real], [temp_pol1_real],
[temp_pol2_real], [temp_cat_real], [peso_col_real], [port_iso_all],
[port_pol1_all], [port_pol2_all], [port_cat_all], [pres_iso_all],
[pres_pol1_all], [pres_pol2_all], [pres_cat_all], [temp_iso_all],
[temp_pol1_all], [temp_pol2_all], [temp_cat_all], [peso_col_all],
[col_senza_all], [peso_col_iso], [peso_col_pol1], [peso_col_pol2],
[peso_col_cat], [num_carosello], [cod_porta_stampo], [cod_stampo_a],
[cod_stampo_b], [idasa]

si hago
- Select distinct from colate
me dice que tengo 600 registros dferentes, ojo registros para SQL,
esto es que tienen todos sus campos distintos, no? pero yo sé que lo que
quiero es otra cosa, que los campos que realmente hacen distinto a un
registro son 5, los de la siguiente sentencia, que si estos son distintos el
registro es distinto, y si sql me dice que no es por que la tabla esta mal y
duplica valores, y atención a esto; haciendo distintos algunos campos, por
que le sale de dentro al que los mete, de tal forma que la select distinct me
dice que hay menos campos que los que realmetne hay.
Si hago
- select tempo,id_h,cod_porta_stampo, stampo, num_carosello, count (*)
RESPES
from colate
group by tempo,id_h,cod_porta_stampo, stampo, num_carosello
having count (*)>1
Me dice dice que 650, que se repiten entre 6, 2, 3 cada uno de ellos.
Quiero coger el resultado de esta select pero con todos los campos y
meterlos en una tabla temporal, para poder eliminar sin problemas de colate
los duplicados y luego volver a meter estos datos sin el campo "repes" en
colate, para así tener todos los campos pero sin duplicados.

Gracias,

Preguntas similare

Leer las respuestas

#11 gandy
05/12/2007 - 16:56 | Informe spam
No te rías.. pero de donde saco C2, de donde saco esa tabla? como la creo

"Carlos M. Calvelo" wrote:

Hola,

On 5 dec, 16:27, gandy wrote:
> Hola, cierto y gracias Carlos, no habia intentado el tema con identity... y
> te cuento
> si meto el idd en el select... having... me da como distintas todas las
> filas, con lo que no me sirve, ahoa bien si lo quito me da los registros que
> realmente puedo eliminar, pero que pasa que ya no tengo el idd en la tabal
> colate2 y ya no puedo cojer el memor. Ya que el idd crea registros
> secuenciamente, yo pense que si se repetia incrementaba en 1, de tal forma
> que los distintos tendrian el campo idd 1 y los repetidos 2,3,4... segun las
> veces que se repita.
>
> Select tempo, id_h, cod_porta_stampo, stampo, num_carosello, count (*) AS
> "repes"
> into colate2
> from colate
> group by tempo, id_h, cod_porta_stampo, stampo, num_carosello
> having count(*) >1
> (12223 filas afectadas)
>
> Si hago
> Select idd, tempo, id_h, cod_porta_stampo, stampo, num_carosello, count (*)
> AS "repes"
> into colate2b
> from colate
> group by idd, tempo, id_h, cod_porta_stampo, stampo, num_carosello
> having count(*) >1
> me dice
> (0 filas afectadas)
> por que idd los hace a todos distintos
>
>

No nos estamos entendiendo muy bien eh? :-)

Aquí lo pongo otra vez: (lee los comentarios
que te pongo con el código)

alter table colate
add idd int identity(1,1)


select colate.*
from colate inner join colate c2
on colate.tempo = c2.tempo and
colate.id_h = c2.id_h and
colate.cod_porta_stampo = c2.cod_porta_stampo and
colate.stampo = c2.stampo and
colate.num_carosello = c2.num_carosello and
colate.idd > c2.idd



delete colate
from colate inner join colate c2
on colate.tempo = c2.tempo and
colate.id_h = c2.id_h and
colate.cod_porta_stampo = c2.cod_porta_stampo and
colate.stampo = c2.stampo and
colate.num_carosello = c2.num_carosello and
colate.idd > c2.idd


alter table colate
drop column idd


Saludos,
Carlos

Respuesta Responder a este mensaje
#12 Carlos M. Calvelo
05/12/2007 - 17:07 | Informe spam
On 5 dec, 16:56, gandy wrote:
No te rías.. pero de donde saco C2, de donde saco esa tabla? como la creo




En el FROM se hace un join de colate consigo misma:

... from colate inner join colate c2 ...

A la tabla colate de la izquierda no le puse un
alias, y se sigue llamando colate.
A la tabla colate de la derecha le puse un alias
y se llama c2.

Si dudas no ejecutes el delete.
Pero puedes ver el resultado si haces el select
para controlar que registros devuelve.

(y no me he reído)

Saludos,
Carlos
Respuesta Responder a este mensaje
#13 gandy
05/12/2007 - 17:16 | Informe spam
Eres un fiera, muchas gracias fenomeno

"Carlos M. Calvelo" wrote:

On 5 dec, 16:56, gandy wrote:
> No te rías.. pero de donde saco C2, de donde saco esa tabla? como la creo
>

En el FROM se hace un join de colate consigo misma:

... from colate inner join colate c2 ...

A la tabla colate de la izquierda no le puse un
alias, y se sigue llamando colate.
A la tabla colate de la derecha le puse un alias
y se llama c2.

Si dudas no ejecutes el delete.
Pero puedes ver el resultado si haces el select
para controlar que registros devuelve.

(y no me he reído)

Saludos,
Carlos

Respuesta Responder a este mensaje
#14 Carlos M. Calvelo
05/12/2007 - 17:21 | Informe spam
On 5 dec, 17:16, gandy wrote:
Eres un fiera, muchas gracias fenomeno




De nada!
Y ha ido bien? asi a la primera? Ya no tienes duplicados? :)

Saludos
Carlos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida