Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Question 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.

A la espera de sus respuestas, regalos y otros.

Your friend,

StartKill
Lima-Perú
Responder Con Cita
  #2  
Antiguo 18-10-2004
athlontado athlontado is offline
Miembro
 
Registrado: sep 2004
Ubicación: Almázcara - León (España)
Posts: 63
Poder: 20
athlontado Va por buen camino
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
__________________
Óscar Salvador Páez
Aprendiendo a aprehender de quienes aprehenden, sin cerciorarse de sus edades, culturas, sexos, razas, creencias u orígenes, es la forma más sabia de aprehender.
Responder Con Cita
  #3  
Antiguo 18-10-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Question

Holas, athlontado.

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

Saludos

Your f riend,

StartKill
Lima-Perú
Responder Con Cita
  #4  
Antiguo 18-10-2004
gendelphi gendelphi is offline
Miembro
 
Registrado: jul 2003
Ubicación: Tlaxcala Mexico
Posts: 73
Poder: 21
gendelphi Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 19-10-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Thumbs up

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,

StartKill
Lima-Perú
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


La franja horaria es GMT +2. Ahora son las 12:48:31.


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