Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/05/2010, 13:18
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: como hago esta consulta?

La primera pregunta sería saber si las tablas que usas (suponiendo que usas MySQL) son InnoDB o MyISAM. Porque la respuesta sería diferente en cada caso y las mejores opciones también.
El otro problema es que tal y como las has planteado, si cada imagen en image, pertenece a un sólo aviso en advertisement, la tabla advertisement_image es redundante, porque sólo se necesitaría una FK en image referida a advertisement para cumplir con la dependencia.
El modelo de tres tablas sólo tiene sentido si las imágenes no dependieran funcionalmente de advertisement, y pudieran conservarse sin su existencia.
¿Ese es el modelo que pretendes?

En el caso de las InnoDB, se puede poner como cláusula en la declaración de la FK, "ON DELETE CASCADE", condición que haría que el borrado de un registro en advertisement borrase en cascada todas sus relaciones dependientes.
En cambio si las tablas son MyISAM, se debe hacer de otra forma, aunque hay modos mejores que lo que propones.


Un tip que tienes que tener en cuenta es que LIMIT es una cláusula de SELECT, no de UPDATE ni de DELETE. Y además, es una cláusula opcional que sólo tiene sentido necesitas un registro de todo un conjunto devuelto. En tu caso, no tiene ningún sentido borrar de a uno los registros, si ya sabes cuál es el conjunto de registros que quieres eliminar.
Hay otras formas más eficientes de hacerlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)