Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda con Delete

Estas en el tema de Duda con Delete en el foro de Mysql en Foros del Web. Estimados, tengo la siguiente consulta: SELECT tab2.* FROM tabla1 tab1, tabla2 tab2 WHERE tab1.Cerrado = 'SI' AND tab2.idUnico = tab1.idUnicoCliente AND tab2.numeroCarga = tab1.numeroCargaCliente LIMIT ...
  #1 (permalink)  
Antiguo 21/03/2011, 15:12
 
Fecha de Ingreso: octubre-2010
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Duda con Delete

Estimados,

tengo la siguiente consulta:

SELECT tab2.*
FROM tabla1 tab1,
tabla2 tab2
WHERE tab1.Cerrado = 'SI'
AND tab2.idUnico = tab1.idUnicoCliente
AND tab2.numeroCarga = tab1.numeroCargaCliente
LIMIT 500;

Pero si cambio eso a


DELETE tab2.*
FROM tabla1 tab1,
tabla2 tab2
WHERE tab1.Cerrado = 'SI'
AND tab2.idUnico = tab1.idUnicoCliente
AND tab2.numeroCarga = tab1.numeroCargaCliente
LIMIT 500;

EL motor me indica que no es posible realizar la query, si saco el LIMIT funciona perfectamente, pero necesito del limit por regla de negocio.

Como puedo resolverlo?


De ante mano muchas gracias.
  #2 (permalink)  
Antiguo 21/03/2011, 16:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda con Delete

Cita:
Como puedo resolverlo?
Escribiendo bien la consulta. Tiene errores de sintaxis:
Código MySQL:
Ver original
  1. DELETE tab2 FROM tabla1 tab1, tabla2 tab2
  2.     tab1.Cerrado = 'SI'
  3.     AND tab2.idUnico = tab1.idUnicoCliente
  4.     AND tab2.numeroCarga = tab1.numeroCargaCliente
  5. LIMIT 500;
De todos modos ten en cuenta lo siguiente:
Cita:
Si usa un comando DELETE de varias tablas incluyendo tablas InnoDB para las que hay restricciones de clave foránea, el optimizador MySQL puede procesar tablas en un orden ditinto del de su relación padre/hijo. En este caso, el comando falla y se deshace. En su lugar, debe borrar de una tabla úncia y confiar en la capacidad de ON DELETE que proporciona InnoDB para hacer que las otras tablas se modifiquen correctamente.
Del Manual de Referencia: 13.2.1. Sintaxis de DELETE
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/03/2011, 20:30
 
Fecha de Ingreso: octubre-2010
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Duda con Delete

Gracias por la correción, aunque no me sirvio.

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 100' at line 5"
  #4 (permalink)  
Antiguo 21/03/2011, 21:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda con Delete

¿Y te molestaste en leer el link, al menos?
No, no hiciste.
Hubieses encontrado lo siguiente:
Cita:
Puede especificar múltiples tablas en un comando DELETE para borrar registros de una o más tablas dependiendo de una condición particular en múltiples tablas. Sin embargo, no puede usar ORDER BY o LIMIT en un DELETE de múltiples tablas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: delete, delete_query, limite
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:37.