Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
borrrar registros repetidos

ante todo buenas noches, tengo el siguiente problema, tengo una base de datos, con un campo ID y varios mas, el campo ID no es clave principal ni autoincremental, es solo un campo numerico, ej
ID apellido campo2
1 perez a
2 alvarez b
1 smith c
3 calco d

como tendria que hacer para borrar los id repetidos, sin importar cual de los registros me queda, pero si que quede uno, la base de datos de prueba se llama "base", la verdad busque informacion casi todo el dia y la verdad no hay mucho al respecto.
desde ya les agradezco
hugo
Responder Con Cita
  #2  
Antiguo 21-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me imagino que hay que hacer una sentencia sql.
De ahi buscar por medio del campo ID.
De ahi hacer un record count para definir si hay mas de uno de ese mismo ID.
De ahi (yo) guardaria la informacion de uno de ellos en unas variable.
De ahi borraria todos y guardaria el que me interese.
Otra forma es recorrer manualmente la tabla y borrarlos uno a uno.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 21-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
gracias caral
Responder Con Cita
  #4  
Antiguo 21-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
sigo buscando a full con el google y todavia nada
hugo
Responder Con Cita
  #5  
Antiguo 21-07-2010
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Yo creo que podría ser algo así, sino que alguien me corrija, en una tabla que se llama artículos y el campo que podría repetir es Ref

Código SQL [-]
DELETE * FROM articulos WHERE Articulos.ref IN (SELECT DISTINCTROW Articulos.Ref FROM Articulos
WHERE (((Articulos.Ref) In (SELECT [Ref] FROM [Articulos] As Tmp GROUP BY [Ref] HAVING Count(*)>1 )))
ORDER BY Articulos.Ref)

Un saludo.
Responder Con Cita
  #6  
Antiguo 21-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
desde ya muchas gracias por contestar, no me funciono,

DELETE * FROM base WHERE base.id IN (SELECT DISTINCTROW base.id FROM base
WHERE (((base.id) In (SELECT [id] FROM [base] As Tmp GROUP BY [id] HAVING Count(*)>1 )))
ORDER BY base.id)

lo adapte a mi base de datos y campos y no funciono, pero desde ya agradezco tu atencion
hugo
Responder Con Cita
  #7  
Antiguo 21-07-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Suponiendo que: Tabla es el nombre de la tabla, Campo_ID el campo clave y CampoX el que puede repetirse, yo haría:
Código SQL [-]
DELETE FROM Tabla A
WHERE Campo_ID > (SELECT min(Campo_ID) FROM Tabla B
WHERE B.CampoX = A.CampoX);

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 22-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
me estoy volviendo loco, les comento

DELETE FROM base WHERE base.id IN (SELECT DISTINCTROW base.id FROM base WHERE (((base.id) In (SELECT [id] FROM [base] As Tmp GROUP BY [id] HAVING Count(*)>1 ))) ORDER BY base.id)

esto en access funciono, contra sqlserver (microsoft V7) no funciona, si alquien puede saber algo les encargo
gracias
hugo
Responder Con Cita
  #9  
Antiguo 25-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
parece que a nadie se le ocurre algo, que lio para mi, juas
gracias
hugo
Responder Con Cita
  #10  
Antiguo 25-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
En access los corchetes [ ] funcionan en otras BD no.
Tambien pasa lo mismo con el HAVING y el DISTINCTROW.
Tal vez:
Código SQL [-]
DELETE FROM base WHERE base.id IN (SELECT DISTINCT base.id FROM base WHERE (((base.id) In (SELECT id  FROM base As Tmp Where Count(*)>1 GROUP BY [id] ))) ORDER BY base.id)
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 25-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
no funciono, pero desde ya te agradezco que contestes un domingo
hugo
Responder Con Cita
  #12  
Antiguo 05-12-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ecfisa Ver Mensaje
Suponiendo que: Tabla es el nombre de la tabla, Campo_ID el campo clave y CampoX el que puede repetirse, yo haría:
Código SQL [-]
DELETE FROM Tabla A
WHERE Campo_ID > (SELECT min(Campo_ID) FROM Tabla B
WHERE B.CampoX = A.CampoX);
¡Ah bárbaro! Excelente idea. No me sirvió tal cual, quizá por una limitación de MySQL pero me quedó usando una tabla auxiliar.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
mostrar registros repetidos jmlifi SQL 3 20-10-2011 21:15:50
Registros repetidos alegarreta SQL 6 16-04-2010 20:59:51
Eliminar Registros Repetidos en FireBird Blasito Firebird e Interbase 4 18-02-2009 16:03:22
Registros repetidos enecumene PHP 9 01-02-2007 18:17:04


La franja horaria es GMT +2. Ahora son las 11:01:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi