Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Insert de datos faltantes con sql (https://www.clubdelphi.com/foros/showthread.php?t=15272)

StartKill 16-10-2004 02:45:07

Insert de datos faltantes con sql
 
Hola,

Trabajo con delphi 7.0, componentes IBX, Interbase 7.0,

Tengo dos tablas de la siguiente forma:

Código:

tabla01
y mi clave primaria es CODIGO-01
CODIGO-01    DETALLE-01
--------------------------
001          AAAAAAA
002          BBBBBBBB
003          CCCCCCC
004          DDDDDDD
005          FFFFFFFF
006          EEEEEEEE

tabla02
y mi clave primaria es CODIGO-01, CODIGO-02
CODIGO-01    DETALLE-01    CODIGO-02
----------------------------------------
001          AAAAAAA          XXX1
002          BBBBBBBB          XXX1
003          CCCCCCC          XXX1
004          DDDDDDD          XXX1
005          FFFFFFFF          XXX1
006          EEEEEEEE          XXX1

001          AAAAAAA          AAA3
003          CCCCCCC          AAA3
004          DDDDDDD          AAA3
006          FFFFFFFF          AAA3

y una relacion foranea desde la tabla-02 a la tabla-01
por medio del campo CODIGO-01

Si se observa la tabla-02 hay un conjunto de seis (6) registros para codigo-02 (XX1) que estan en la tabla-01

Como haria para llenar los registros faltantes de la tabla-01 en la tabla-02 para el codigo AAA3??, para que quede de la siguiente forma
Código:

tabla02
CODIGO-01    DETALLE-01    CODIGO-02
----------------------------------------
001          AAAAAAA          XXX1
002          BBBBBBBB          XXX1
003          CCCCCCC          XXX1
004          DDDDDDD          XXX1
005          FFFFFFFF          XXX1
006          EEEEEEEE          XXX1
001          AAAAAAA          AAA3
002          BBBBBBBB          AAA3
003          CCCCCCC          AAA3
004          DDDDDDD          AAA3
005          FFFFFFFF          AAA3
006          EEEEEEEE          AAA3

Lo he hecho con codigo en Delphi, pero me gustaria hacerlo con una sentencia SQL o Procedure. :confused:

A la espera de sus respuestas, regalos y otros.

Your friend, :cool:

StartKill
Lima-Perú

athlontado 18-10-2004 13:46:22

Puedes hacerlo con esta sentencia directamente ó bien, meter la sentencia dentro de un procedimiento, al que le pases el CODIGO-02 como parámetro para la citada sentencia.

INSERT INTO TABLA01 (CODIGO-01, DETALLE-01)
SELECT T2.CODIGO-01, T2.DETALLE-01 FROM TABLA02 T2
WHERE T2.CODIGO-02 = 'AAA3';

A ver si te funciona.
Un saludo ;)

StartKill 18-10-2004 19:08:52

Holas, athlontado.

No deseo insertar en la tabla-01 :confused: , la necesito insertar en la tabla-02, mira el ejemplo por favor.

Saludos

Your f :cool: riend,

StartKill
Lima-Perú

gendelphi 18-10-2004 21:34:07

Hola, una forma sería asi:

Código SQL [-]
CREATE PROCEDURE datos_faltantes (cod2 VARCHAR(20))
AS
BEGIN
  INSERT INTO tabla-02
    SELECT codigo-01, detalle-01, :cod2 
    FROM tabla-01 WHERE  codigo-01 NOT IN 
      (SELECT codigo-01 FROM tabla-02 WHERE codigo-02 = :cod2)
END!!

Quisas tenga algun error de sintaxis, ya que no tengo a la mano Interbase para probarlo, pero en teoria debe funcionar.

StartKill 19-10-2004 02:59:05

Holas, gendelphi/athlontado.

Perfecto, lo ajusté a mi necesidad y funciono, hay veces que uno necesita la ayuda de compañeros. (no se me ocurrio ... el "NOT IN")

Muchas gracias

Yuor friend, :cool:

StartKill
Lima-Perú


La franja horaria es GMT +2. Ahora son las 07:27:30.

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