Borrado registros duplicados sga_detalle_acta

Hola, en el proceso de migración se produjo una duplicación de exámenes rendidos en nuestro sistema, son pocos, unos 282 según la siguiente consulta:


select sga_actas_examen.materia,legajo,folio,renglon,tipo_inscripcion,equiv_parcial,fecha_de_examen,resultado,nota,resultado_2,nota_2,vigencia,plan,controlado,rectificado, count(*) 
from sga_detalle_acta 
inner join sga_actas_examen 
on sga_actas_examen.acta=sga_detalle_acta.acta 
--where legajo="2453" 
group by sga_actas_examen.materia,legajo,folio,renglon,tipo_inscripcion,equiv_parcial,fecha_de_examen,resultado,nota,resultado_2,nota_2,vigencia,plan,controlado,rectificado
having count(*)>1
order by legajo;

El tema es que queremos borrar esos registros duplicados y no encontramos la forma de hacerlo ya que en esta consulta existen dos tablas relacionadas que impiden la identificación de los registros para su posterior eliminación.

A la espera de sugerencias los saludamos muy atentamente.

Hola

Fijate de usar las claves primarias completas de las tablas y ver que pasa

en sga_actas_examen es unidad_academica, tipo_acta, acta.
En sga_detalle_acta unidad_academica, tipo_acta, acta, carrera, legajo

Por ahi tenes dos legajos iguales en distintas carreras o dos actas (normal-rectificativa) con el mismo número.

Emilio

Gabriel:

Tenés que ver bien cual es el problema. Solo quieren borrar los registros del detalle? Poblaron otras tablas como sga_examenes_equiv?

También tienen que ver que pasa con la tabla sga_folios.

Saludos

Gustavo

Ante todo quería darte las gracias, Emilio, por la ayuda que me brindaste en otra oportunidad, ya que me fue muy útil tu aporte y no tuve oportunidad de agradecerte.

Volviendo a la problemática: El tema es así, resulta que estamos en la etapa final de migración y de algún modo desafortunado corrimos dos veces en distintas oportunidades el script de migración de algunas actas y se “duplicaron”, y esto lo pongo entre comillas ya que se duplicaron las notas de los exámenes de algunos alumnos pero en distintas actas, sumado a que en dichas actas existen datos correctos que no queremos perder y por consiguiente el borrado tiene que ser a nivel quirúrgico borrando sólo los registros que hacen que el alumno tenga dos notas de una misma materia en una misma fecha, pero distinta acta… Se entiende???

Con el select que puse en el post logré identificar los que deben ser borrados, incluidos los aplazos que no puedo ver con el reporte de alumnos con materias aprobadas mas de una vez. Intenté una forma que me muestre el rowid de los registros de la tabla sga_detalle_acta para poder borrarlos, pero mi sql es algo reducido y no me doy idea como hacer para ver este dato y así borrarlos tranquilo.

Si me pueden dar una mano se los voy a agradecer de todo corazón, ya que me he quemado las pestañas tratando de sacar esto y no logro encontrar la forma.

Saludos cordiales.
Gabriel.-

Hola

Sin duda que lo vas a tener que hacer uno por uno.

A tu consulta la mandaría a una tabla temporal (o no tanto) y luego buscaría en sga_detalle_acta

select *
from sga_detalle_acta sda, temporal t
where sda.legajo = t.legajo
and sda.folio = t.folio
and sda.renglon = t.renglon
and sda.fecha_de_examen = t.fecha_de_examen

no creo que hagan falta todos los campos. Cuantos alumnos rindieron mas de un examen el mismo dia?

Emilio