Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-02-2007
chipsoni chipsoni is offline
Miembro
 
Registrado: nov 2005
Posts: 75
Poder: 19
chipsoni Va por buen camino
Limpieza de base de datos

Hola buenas tardes, tengo una duda:

Necesito hacer limpieza de una base de datos, tengo que borrar los elementos de una tabla que cumplan una condicion y de todas sus subtablas. va asi mas o menos:

Si tdemanda.finalizada=1 entonces la borro y borro todas las entradas de otras 10 tablas siempre que tdemanda.codigo, que es la clave primaria de la tabla tdemanda, sea igual al codigo (que tambien es clave primaria) de las otras tablas.

Lo he hecho asi (solo voy a poner 3 tablas ademas de tdemanda):

DELETE * from tdemanda, tequipo_informatico, tmantenimiento, tmantenimiento_dispositivo
WHERE ((tdemanda.hecho=1) and (tdemanda.codigo=tequipo_informatico.codigo))
or ((tdemanda.hecho=1) and (tdemanda.codigo=tlaboratorio.codigo))
or ((tdemanda.hecho=1) and (tdemanda.codigo=tmantenimiento.codigo))
or ((tdemanda.hecho=1) and (tdemanda.codigo=tmantenimiento_dispositivo.codigo));

Tambien decir que si un codigo esta ademas de en la tabla tdemanda, en una de las subtablas, no puede estar en ninguna otra subtabla.

Es correcto?, hay alguna otra forma menos engorrosa?

Última edición por chipsoni fecha: 08-02-2007 a las 19:40:46.
Responder Con Cita
  #2  
Antiguo 08-02-2007
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Sí hay definidas unas claves ajenas en las subtablas no será necesario que hagas esa consulta tan engorrosa.
Responder Con Cita
  #3  
Antiguo 08-02-2007
chipsoni chipsoni is offline
Miembro
 
Registrado: nov 2005
Posts: 75
Poder: 19
chipsoni Va por buen camino
si que estan relacionadas las tablas, ¿como seria entonces?, ¿borro en tdemanda y se borran las demas?
Responder Con Cita
  #4  
Antiguo 08-02-2007
chipsoni chipsoni is offline
Miembro
 
Registrado: nov 2005
Posts: 75
Poder: 19
chipsoni Va por buen camino
¡Me da un error!

Cuando hago

Delete * from tdemanda where tdemanda.hecho=1;

Lo mas facil del mundo y me dice que hay algo equivocado en la sintaxis.

Dios mio y yo que creia que esto era una chorradita, ¿alguien me puede echar una mano por favor?
Responder Con Cita
  #5  
Antiguo 08-02-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Prueba así

Código SQL [-]
Delete from tdemanda where tdemanda.hecho=1;

Sin el asterisco.

Suerte.
Responder Con Cita
  #6  
Antiguo 09-02-2007
chipsoni chipsoni is offline
Miembro
 
Registrado: nov 2005
Posts: 75
Poder: 19
chipsoni Va por buen camino
Va perfecto, muchisimas gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Herramienta case para diccionario de datos de base de datos firebird mcalmanovici Firebird e Interbase 1 11-02-2007 15:17:37
Limpieza del DBgrid Alexita22 OOP 3 09-08-2006 08:27:15
Omitir limpieza de cabezal de impresora emeceuy Impresión 5 06-08-2005 05:07:47
de vuelta con la limpieza de edit botones67 Varios 3 06-06-2005 19:47:07
Reto Para Expertos En Base De Datos Y Tipos De Datos.... (blob) frankmch Conexión con bases de datos 2 08-09-2003 19:44:52


La franja horaria es GMT +2. Ahora son las 16:26:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi