Ver Mensaje Individual
  #8 (permalink)  
Antiguo 27/07/2010, 06:45
elalmacen60
 
Fecha de Ingreso: mayo-2008
Mensajes: 111
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Error en un delete

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Has intentado podar un árbol cortando la misma rama en la que estás parado?
Bueno, desde la óptica de las bases de datos, eso es lo que estas haciendo: Estás invocando en un subselect la misma tabla sobre la que estás borrando... Eso no se puede hacer porque el DBMS no puede resolver a priori si uno de los registros que el subselect lee no será el mismo que estás borrando, y en ese caso ¿en qué estado está? ¿Borrado o legible?

Bien, el tema es que quieres borrar de la tabla clientes a todos los clientes que pertenezcan al grupo 3 y que al mismo tiempo, su ID sea mayor al menor de todos los clientes registrados...
Al menos eso es lo que se desprende de esto:
Código MySQL:
Ver original
  1. delete from clientes where IdGrupo = 3 and IdCliente >(Select min(IdCliente) from clientes where IdCliente = IdCliente)
Lo que no se comprende es la lógica de lo que estás haciendo: ¿Y si cliente de menor ID pertenece también al grupo 3? Eso haría que se borrase sólo el a partir del segundo miembro del grupo.
Sería mejor, a mi entender, que primero definas un poco mejor cuál es el cliente o clientes que quieres eliminar, es decir: Plantea un criterio que sea consistente y luego veremos cómo hacerlo (aunque me arriesgo a anticipar que para hacer eso requerirás de dos consultas).
Gracias por tu respuesta.
Basicamente lo que necesito hacer es supongamos que tengo 3 registros solo dejar el menor. Por lo tanto borrar los mayores.

Entiendo lo que me dices de cortar la rama en la que estoy parado. Pero entonces como hago??? Por que la verdad que no lo se. Si me puedes ayudar te lo agradeceria enormemente!.