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 12-02-2007
juanpe juanpe is offline
Miembro
 
Registrado: oct 2004
Posts: 46
Poder: 0
juanpe Va por buen camino
Error en sql delete

Buenas tardes, mi problema es que no soy capaz de borrar un registro de una tabla referenciadolo por el campo de otra tabla, uso ib 7.5.

Tabla paciente con campo id_paciente
Tabla estudio con campo estudio,id_paciente

Pues quiero hacer :

Primer intento:
Delete from paciente where paciente.id_paciente = estudio.id_paciente and estudio.estudio = 6150

Error: column unknown Estudio.id_paciente.

Ok, el error es que no le he incluido la tabla estudio despues del from.

2º Intento
Delete from paciente,estudio where paciente.id_paciente = estudio.id_paciente and estudio.estudio = 6150

Error: token unknown "," Pero parece ser que no le gusta la coma...
asi que no se que probar.

No se estoy un poco perdido, tengo soluciones para continuar,pero me perecen chapuceras y esque pensaba que podia realizar esta instruccion sin problemas, de igual manera que puedo hacer:

Select nombre from paciente,estudio where paciente.id_paciente = estudio.id_paciente and estudio = 6150


Muchas gracias.
Responder Con Cita
  #2  
Antiguo 12-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
La verdad es que en lo particular no conozco como hacerlo de la manera que tu lo estas tratando de hacer pero podria sugerir que crearas el siguiente procedimiento almacenado...

Código SQL [-]
CREATE PROCEDURE NEW_PROCEDURE 
AS
DECLARE VARIABLE VIDESTUDIO CHAR(30);
begin
  for select idpaciente from estudio
  into :videstudio do
  begin
    delete from paciente where id_paciente = :videstudio;
  end 
end

Asi, de esa manera borraria todos los registros de la tabla "paciente" que tengan relacion con el campo idpaciente de la tabla estudio.

Espero te sirva de algo
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 12-02-2007
juanpe juanpe is offline
Miembro
 
Registrado: oct 2004
Posts: 46
Poder: 0
juanpe Va por buen camino
Muchas gracias jhony, la verdad que ese paso esta resuelto con otra sql, que borra los estudios vincunlandolos por el campo id_paciente.

La verdad uqe no se si se puede hacer, dicho de otra forma lo que quiero es borrar el paciente de la tabla paciente usando el campo id_paciente, que relaciona ambas tablas, donde el estudio 6000 contiene el id_paciente que quiero borrar.

Muchas gracias por vuestro tiempo.
Responder Con Cita
  #4  
Antiguo 12-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Hay algo que no entiendo en el asunto pero creo que en ese caso lo unico que te faltaria es colocar un parametro de entrada al procedure con el codigo del estudio para que todo quede asi:
Código SQL [-]
CREATE PROCEDURE NEW_PROCEDURE (
    IDESTUDIO CHAR(30))
AS
DECLARE VARIABLE VIDESTUDIO CHAR(30);
begin
  for select idpaciente from estudio=:idestudio
  into :videstudio do
  begin
    delete from paciente where id_paciente = :videstudio;
  end 
end

Y de esa manera mas adelante poder hacer por ejemplo un

Cita:
execute procedure New_procedure('6000');
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 12-02-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Prueba con esto

Código SQL [-]
Delete from paciente where paciente.id_paciente in 
(select id_paciente from estudio where estudio = 6150)

Creo que la sintaxis es así, pero no estoy del todo seguro.

Suerte y un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
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
Error idftp.delete ilichhernandez Internet 1 27-09-2006 05:55:41
Error con Delete From ElDioni SQL 2 10-10-2005 09:57:56
Error con Update y Delete c748a SQL 4 15-06-2005 15:23:03
Error en sentencia delete febito Oracle 2 25-06-2004 15:23:50
Error en consulta SQL (delete FROM ...) orfeo SQL 7 16-05-2003 03:41:34


La franja horaria es GMT +2. Ahora son las 14:42:16.


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