Autor |
Mensaje |
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Sql Borrar Y Editar Un Solo Registro Cuando Son Duplicados En SQL
e estado buscando en manuales y luego en google
solo e encontrado preguntas similares sin respuesta
"Si tengo una tabla y dentro de ella 4 registros exactamente iguales, pero sin algun identificador, como le puedo hacer para borrar unicamente uno de ellos?
Gracias por adelantado."
|
#1 Viernes, 21 Junio 2013, 04:01 |
|
|
jousseph
jousseph germaine celis zambrano
Analista Programador
Registrado: Julio 2010
Mensajes: 434
Edad: 38 Ubicación: Tachira
|
Re: Sql Borrar Y Editar Un Solo Registro Cuando Son Duplicados En SQL
Huyyyy esta como difÃcil Codificador, porque para todo registro se necesita un ide con su llave primaria, recuerdo que en gambas 2 habÃa un problema con sqlite que cuando le borraba algún campo a la tabla no me acuerdo si era también la ide, la base de datos quedaba corrupta no se podÃa arreglar ni borrar, yo decÃa no puede ser, esto es grave mi hermano!!!, entonces experimente en gambas 3 y me dio una gran risa cuando vi que Benoit como que se dio cuenta de la cuestión nose si estoy equivocado! pero le creo una opción que dice editar jajajaja y note que se creaba otro campo mas abajo, como para evitar algún error o datos corruptos jajaja, pero esa cuestión suya me tiene pensativo.
Saludos
|
#2 Viernes, 21 Junio 2013, 05:23 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
bien
llevo dias pensando en esto y buscando la solucion
en todos los otros foros dicen que no se puede o que cambie el diseño de la tabla
y como ultima opcion publique en este foro
digo
"si se pueden crear individualmente registros duplicados debe haber una forma de eliminarlos individualmete"
como todavia me quedaba algo de energia
entonces me puse a jugar con el libreoficee base
hasta que recorde
-ver mas alla de lo evidente ohhhhhhhhhhhhhhhhh
debe haber otro camino
si puedo mostrar un solo registro con un select
y
en sql se puede usar una subconsulta como (from)tabla
entonces
delete * from (subconsulta que devuelve un solo registro)
y funcionaaaaaaaaaaa
ahora solo me falta probar el update
que debe ser un poco mas largo
|
#3 Viernes, 21 Junio 2013, 06:00 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Sql Borrar Y Editar Un Solo Registro Cuando Son Duplicados En SQL
Hay una capacidad de SQL que no es muy utilizada, pero que te resuelve eso sin problemas. Es la posibilidad de relacionar una tabla consigo misma.
Por ejemplo, para detectar duplicados:
Select * from miTabla A, miTabla B where a.campo1 = b.campo1 and a.campo2=b.campo2
Más simple aún, si lo que quieres es no ver los duplicados:
Ahora: ¡CREA CLAVES ÚNICAS! Es condición mÃnima para que una tabla de una base de datos sea una tabla de una base de datos. Sin eso, lo mismo te da guardar tus datos en un fichero de texto y buscarlos con la opción buscar del gedit...
|
#4 Viernes, 21 Junio 2013, 09:15 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Sql Borrar Y Editar Un Solo Registro Cuando Son Duplicados En SQL
Hay una capacidad de SQL que no es muy utilizada, pero que te resuelve eso sin problemas. Es la posibilidad de relacionar una tabla consigo misma.
Por ejemplo, para detectar duplicados:
Select * from miTabla A, miTabla B where a.campo1 = b.campo1 and a.campo2=b.campo2
Más simple aún, si lo que quieres es no ver los duplicados:
Ahora: ¡CREA CLAVES ÚNICAS! Es condición mÃnima para que una tabla de una base de datos sea una tabla de una base de datos. Sin eso, lo mismo te da guardar tus datos en un fichero de texto y buscarlos con la opción buscar del gedit...
los select funcionan bien el problema era con los updates y delete
y usandolos como subconsulta funciona bien
solo que queda un poco mas largo
tanto que me gustaria que los fines de linea fueran con un ;
como en otros lenguajes
pero yo si queria ver duplicados
y borrarlos y editarlos invividualmente
de hecho si ves programas como sqlitemanager crea un rownumber automatico que funciona como clave
y phpadmin no soporta editar o borrar graficamente registros repetidos individualmente
sin embargo libreoffice no tiene esos problemas para hacerlo en modo grafico
por que la tabla no tiene clave
por que es un dbf y con el programa orginal funcionaba bien en su 286
salvo por este problema del sql, relmente por los datos que guarda no tiene mucho sentido que tambien tengan clave
|
#5 Viernes, 21 Junio 2013, 20:43 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Sql Borrar Y Editar Un Solo Registro Cuando Son Duplicados En SQL
, relmente por los datos que guarda no tiene mucho sentido que tambien tengan clave
Discrepo. Aunque guardase sólo un registro toda tabla necesita una clave. Los dbf (en los tiempos del msdos es cuando yo los trataba, e imagino que ahora sigue igual) sà soportaban Ãndices, que se almacenaban en ficheros extensión .idx, si no recuerdo mal... y/o .ndx (no recuerdo. Qué malo es hacerse viejo).
Si tiene mucho sentido por cuanto mira qué follón te llevas para actualizar y borrar.
SÃ tiene sentido, por cuanto evitarÃas esos duplicados.
Pero, en fin, tu sabrás mejor que yo de qué va ese tema.
Saludos.
|
#6 Viernes, 21 Junio 2013, 21:20 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
si
solo que el programador de la tabla no usaba claves y tampoco usaba sql
y el programa funcionaba
esta tabla es especial por que los duplicados no son duplicados
por lo tanto no los puedo eliminar
otra idea que se me acaba de ocurrir al leer tu respuesta es agregar un campo autonmerico como campo clave
de todas maneras tengo que hacer mas cambios en la base
última edición por codificador el Sabado, 22 Junio 2013, 03:33; editado 1 vez
|
#7 Sabado, 22 Junio 2013, 03:32 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Sql Borrar Y Editar Un Solo Registro Cuando Son Duplicados En SQL
Siempre se pueden eliminar. Prueba algo asÃ:
CREATE TABLE tabletemp AS SELECT DISTINCT * FROM mitabla;
DELETE * FROM mitabla;
INSERT INTO mitabla SELECT * FROM tabletemp;
DROP TABLE tabletemp
Y ya está, duplicados eliminados. Ahora añades un autonumérico como clave primaria y todo arreglado.
Saludos
|
#8 Sabado, 22 Junio 2013, 09:01 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Sql Borrar Y Editar Un Solo Registro Cuando Son Duplicados En SQL
Siempre se pueden eliminar. Prueba algo asÃ:
CREATE TABLE tabletemp AS SELECT DISTINCT * FROM mitabla;
DELETE * FROM mitabla;
INSERT INTO mitabla SELECT * FROM tabletemp;
DROP TABLE tabletemp
Y ya está, duplicados eliminados. Ahora añades un autonumérico como clave primaria y todo arreglado.
Saludos
gracias
pero es que no son duplicdos son registros iguales
es la tipica tabla_detalle
que se suman y se obtiene un total
si borro los duplicados el total que esta guardado en otra tabla ya no coincide
el autonumerico sin eliminar nada es lo mas facil
mi idea original funciona pero las consultas quedan demasiado grandes
|
#9 Sabado, 22 Junio 2013, 19:21 |
|
|
|