FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
ayuda con este query
Holas amigos de este foro:
Tengo dos tablas (DetalleB, DetalleBS) relacionadas entre si (uno a mucho) por iddetalle. Necesito eliminar de la tabla DetalleB el registro que cumplan que idfactura = 15361, pero primero debo eliminar los registros de la tabla DetalleBS que esten relacionados. Esta consulta: me devuelve : varios registros ejemplo: iddetalle 12,13,14 ... Necesito eliminar de la tabla DetalleBS todos esos registros, por ejemplo:
Pero intento buscar una forma donde me lo elimine todos automaticamante. sin tener que ponérselo yo uno por uno, pensé en:
Pero me da el error: Cita:
|
#2
|
||||
|
||||
Hola Ledian_Fdez, la consulta sería esta para borrar el detalle:
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#3
|
|||
|
|||
nada aun!!!
Esto es un procedimiento que intento hacer para una aplicacion que por algun error me genera documentos dobles y necesito eliminarlos todos.
Por eso es que intentaba buscar otra solución tal como:
No se si me hago entender. |
#4
|
||||
|
||||
Esta situacion se parece mucho a las utilidades que uo paso haciendo.
Por ejemplo eventualmente un cliente me dice que elimine las facturas anteriores al año 2005, entonces el asunto es que estan las cabeceras y los detalles. Como lo resuelvo yo? La respuesta es hacer una utilidad que primero te permita seleccionar el rango de facturas que eliminaras podria ser una qry de la siguiente forma:
Seguidamente una vez que tengo en la pantalla una consulta con las facturas que deso borrar, hago un ciclo de la siguiente manera:
Bueno esto es lo que yo suelo hacer, ojala te sirva Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!! |
#5
|
|||
|
|||
aun no !!!
Eso esta muy bueno, pero en mi caso solo puse una parte del código, me pasa con muchas mas tablas y pensé que con un procedimiento almacenado lo podría resolver.
Gracias de todas formas y es muy valida tu ayuda, lo tendré en cuanta para otras ocasiones. Aun estoy en espera de mas ideas. Aunque me encanta trabajar con SQL. |
#6
|
|||
|
|||
A mi entender lo correcto seria manejar la propiedad de "cascade" en los foreign key para el delete entre las tablas detalles, asi cuando borrases un detalle en la tabla de Fac_DetalleB se eliminaria de la tabla de Fac_DetalleBS sin tener que tirar codigo de tu parte.
sin embargo el mundo no es tan bello como quisieramos y existen ocaciones en donde el borrado de los detalles de las tablas secundarias es en base a validaciones y es ahi donde nos metemos en problemas al usar un delete on cascade y casi casi nos vemos forsados a ejecutar procedimientos. en tu caso el borrado de las tablas quedaria:
y con eso te ahorras la consulta para sacar el id de la factura, para eliminar los detalles de la tabla Fac_DetalleB se usaria la misma logica: y listo. incluso existe una tercera opcion: usando un trigger instead of delete en la tabla Fac_DetalleB
y asi la eliminacion de los detalles se haria automatico con el borrado. tu decides. por cierto, si detectas algun error en sintaxis el problema es que no tengo SQL la mano y lo teclee todo en notepad |
#7
|
||||
|
||||
Cita:
¿Has probado con poner "IN" en lugar de "="? Lo digo porque el mensaje te lo dice claramente, se devuelven muchas filas donde se esperaba sólo una...
Un saludo |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Mirar por favor este query y comentar... | El_Raso | Firebird e Interbase | 33 | 18-11-2008 12:53:44 |
ayuda con este codigo | kurono | Varios | 4 | 13-06-2008 01:03:29 |
una ayuda con este error please | dariana20 | SQL | 3 | 14-06-2006 23:14:06 |
como quedaria el SQL para este Query?? | JCarlos | Conexión con bases de datos | 2 | 15-11-2004 12:59:28 |
Ayuda con este error???? | danytorres | Varios | 1 | 27-10-2004 11:38:09 |
|