Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error en sql delete (https://www.clubdelphi.com/foros/showthread.php?t=40288)

juanpe 12-02-2007 19:55:40

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.

jhonny 12-02-2007 20:24:10

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 ;)

juanpe 12-02-2007 20:59:40

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.;)

jhonny 12-02-2007 21:06:29

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');

fjcg02 12-02-2007 23:01:02

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


La franja horaria es GMT +2. Ahora son las 23:11:12.

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