Ver Mensaje Individual
  #7  
Antiguo 01-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 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
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
-----------------------------
1    A         R             (abreviando...)
2    A         R
3    B         R
4    C         R
5    B         R             (mal bicho el profe ...)
La consulta la hice con SELECT para visualizar el resultado (si lo borro difícilmente lo vea):
Código:
IdM  CodigoM   CalificacionM
-----------------------------
1    A         R
3    B         R
Es decir que si cambiamos SELECT por DELETE , esos registros son los que se eliminarán. Por lo tanto
tenemos nuestro problema solucionado.

En definitiva la consulta queda así:
Código:
SELECT * FROM PRUEBA    
WHERE IdM NOT IN(
SELECT MAX(IdM) FROM PRUEBA
GROUP BY CodigoM, CalificacionM)
Fijate que usando MAX(IdM) elimina las primeras apariciones de repetición y usando MIN(IdM), elimina las repeticiones posteriores
Y por supuesto cambiá 'SELECT * FROM' por 'DELETE FROM', al menos si queres que borre...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-05-2010 a las 06:41:18.
Responder Con Cita