Eliminacion de duplicados
Hola Foreros:
Les planteo lo siguiente(con Base de Datos SQL Server): Form1-Tabla1-DBGrid1-DataSource1 Form2-Tabla2-DBGrid2-DataSource2 Una suposición: Teniendo 3 pasos a), b) y c). a) Ingreso 3 registros en el Form1. 1Registro-XX1 2Registro-XX2 3Registro-XX3 Estos 3 registros los copio al Form2 (Tabla2), luego elimino los registros del Form1. b) Ahora ingreso 4 registros en el Form1. 1Registro-XX4 2Registro-XX3 3Registro-XX5 4Registro-XX6 Estos 4 registros los copio al Form2 (Tabla2), luego elimino los registros del Form1. (...Y asi sucesivamente....) Aqui el detalle: c) Cuando copio los registros, en el Form2 debo realizar una eliminacion de todos aquellos que se hayan duplicados, es decir; se debe eliminar el primer registro encontrado duplicado. Como verán este registro (3Registro-XX3) se repite (2Registro-XX3). Lo que significa que debo eliminar: 3Registro-XX3 Y mantener el registro : 2Registro-XX3 Estas elminaciones se realizan en el Form2 (Tabla 2), que esta relacionado con el DataSource2 el DBGrid donde se vizualizan tooodas las copiadas (Incluyendo las duplicadas) Puedo eliminar del DBGrid, el seleccionado, el primer o el ultimo registro; pero no sé cómo hacer para eliminar el primer duplicado encontrado, ya que el segundo es el que quiero que se mantenga. Graaacias. |
Hola sizne.
Para eliminar los duplicados en "Tabla2" podés usar: Código:
DELETE FROM Tabla2 a Si queres evaluar por más de un campo tendrías que usar en la cláusula WHERE: Código:
WHERE b.Campo1 = a.Campo1 AND b.Campo2 = a.Campo2 AND ... |
Hola ecfisa,
Los datos que puse son solo ejemplos, en si no son cantidades.. (MIN...) son palabras (siglas de Materias que vuelven a programarse en otra gestion cuando se aplazan, por eso en la Tabla2, se repetiran, cosa que ahi tengo que hacer una limpieza y eliminar SOLO el primer registro duplicado). Espero me entiendas :o Gracias!!! |
Hola sizne.
Si, te entendí bién la primera vez. Usá el primer ejemplo que te puse y eliminará los duplicados. (por supuesto cambiá los nombres de campo que puse por los tuyos...);) Saludos. Nota: Borré unos comentarios erroneos en el primer post: "DELETE Campos_Deseados FROM" en su lugar va "DELETE FROM", el error fue por que hice la prueba con SELECT y copie y pegue... perdón. |
Hola ecfisa, gracias por responder y explicar tan bien ;).
Con tu ayuda hice el el siguiente codigo Cita:
Cita:
No sé como hacerlo para salga como quiero, solo eliminar los primeros duplicados y que sean reprobados. Saludos! |
Holas...
Miren estuve haciendo lo siguiente para mi duda... pero me los elimina todos los "reprobados" sin importar que haya o no duplicados :confused: Cita:
|
Hola de nuevo sizne.
Hoy con un poco más de tiempo, revisé a fondo el código anterior, cosa que no hice antes por carecer de él.:( Y sí, efectivamente no hace lo que deseas. Ahora bién, hice una tabla en interbase con los campos involucrados, y la cargué de la siguiente forma: Código:
IdM CodigoM CalificacionM Código:
IdM CodigoM CalificacionM tenemos nuestro problema solucionado. En definitiva la consulta queda así: Código:
SELECT * FROM PRUEBA Y por supuesto cambiá 'SELECT * FROM' por 'DELETE FROM', al menos si queres que borre...;) Saludos. |
Hola ecfisa, gracias eh!!!
Cambie unas cositas en el ejemplo Código:
IdM CodigoM CalificacionM Código:
IdM CodigoM CalificacionM Lo que hice fue lo siguiente en Delphi, funciona pero quiero reducir el codigo y que sea en menor tiempo la ejecucion....y en una sola tabla el recorrido.
Aqui estoy usando dos tablas, asi recorro uno por uno y comparo con cada registro de la OTRA tabla. Pero si fuese solo en una tabla....ya no puedo usar el FIRST,NEXT para comparar.... Saludos... |
Hola sizne.
A ver... ¿ Lo que queres es que se eliminen las apariciones de registros duplicados cuya calificacion sea 'Reprobado' ? Si es eso bastaría con modificar el código sql así : Código:
DELETE FROM PRUEBA |
La franja horaria es GMT +2. Ahora son las 15:21:09. |
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