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 01-11-2015
sowei sowei is offline
Miembro
 
Registrado: abr 2010
Posts: 21
Poder: 0
sowei Va por buen camino
Insertar registros

Hola amigos
Tengo poca experiencia en sql. Me gustaría saber si es posible que en una sentencia puedan insertarse registros en una tabla que sean el resultado de un 'select'.

Es decir, quiero hacer un 'select' y que el grupo de registros devueltos se inserten en una tabla.

La idea es grabar una tabla temporal a partir de una consulta, y que esta tarea la haga el servidor directamente. Así evitar que el resultado venga al ordenador cliente y de este se grabe el temporal en el servidor, haciendo viajar los datos por la red como locos.
No se si me he explicado bien.
Utilizo interbase.

Gracias y saludos
Responder Con Cita
  #2  
Antiguo 01-11-2015
luisito12382 luisito12382 is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 5
Poder: 0
luisito12382 Va por buen camino
lo estas programando en delphi
Responder Con Cita
  #3  
Antiguo 01-11-2015
sowei sowei is offline
Miembro
 
Registrado: abr 2010
Posts: 21
Poder: 0
sowei Va por buen camino
Cita:
Empezado por luisito12382 Ver Mensaje
lo estas programando en delphi
Si, lo programo en delphi. Perdonad no haberlo especificado anteriormente
Responder Con Cita
  #4  
Antiguo 01-11-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Depende de lo que quieras hacer, ejemplo:
Código SQL [-]
insert into tabla2 select * from tabla1
Obviamente, en este caso las tablas deben ser iguales.
Y aquí da igual el delphi, es sql, lo puedes poner en un stored procedure de la base de datos y lanzarlo cuando lo necesites.

Por cierto, procura poner títulos descriptivos a tus preguntas, gracias
Responder Con Cita
  #5  
Antiguo 01-11-2015
sowei sowei is offline
Miembro
 
Registrado: abr 2010
Posts: 21
Poder: 0
sowei Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Depende de lo que quieras hacer, ejemplo:
Código SQL [-]
insert into tabla2 select * from tabla1
Obviamente, en este caso las tablas deben ser iguales.
Y aquí da igual el delphi, es sql, lo puedes poner en un stored procedure de la base de datos y lanzarlo cuando lo necesites.

Por cierto, procura poner títulos descriptivos a tus preguntas, gracias
La idea es grabar una tabla nueva (temporal) y por lo tanto diferente a la que estoy consultando, más que nada porque el resultado de la consulta proviene de varias tablas.

Por poner un ejemplo sencillo, hacer un select de la tabla LINEAS DE FACTURA, para obtener los artículos vendidos. A su vez realizar un left join para obtener el cabezal de la factura y obtener el campo FECHA para descartar los que no queremos. Y también un left join con la tabla ARTICULOS para obtener la descripción del articulo. El resultado (varios registros) grabarlos en la tabla VENTAPERIODO que tendría los campos p.e. ARTICULO, CANTIDAD, PRECIO, IMPORTE, DESCRIPCION, ...

Este sería un ejemplo sencillo. Lógicamente la consulta sería mucho más complicada.

Supongo que desde SQL puro no puedo hacerlo, pero quizá sí con stored procedures?
Responder Con Cita
  #6  
Antiguo 02-11-2015
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por sowei Ver Mensaje
La idea es grabar una tabla nueva (temporal) y por lo tanto diferente a la que estoy consultando, más que nada porque el resultado de la consulta proviene de varias tablas.

Por poner un ejemplo sencillo, hacer un select de la tabla LINEAS DE FACTURA, para obtener los artículos vendidos. A su vez realizar un left join para obtener el cabezal de la factura y obtener el campo FECHA para descartar los que no queremos. Y también un left join con la tabla ARTICULOS para obtener la descripción del articulo. El resultado (varios registros) grabarlos en la tabla VENTAPERIODO que tendría los campos p.e. ARTICULO, CANTIDAD, PRECIO, IMPORTE, DESCRIPCION, ...

Este sería un ejemplo sencillo. Lógicamente la consulta sería mucho más complicada.

Supongo que desde SQL puro no puedo hacerlo, pero quizá sí con stored procedures?
Hola sowei,

En SQL se puede hacer todo, lo que tienes que hacer es crearte una tabla con los campos igualmente definidos que vas a necesitar de las tres tablas y crear la SQL que recoja los campos que vas a grabar.

Código SQL [-]
INSERT INTO VentaPeriodo
  SELECT
      LF.CAMPOLINEAFACTURA
      ,LF....
      ,LF....
      ,LF....
      ,F.CAMPOFACTURA
      ,F....
      ,F....
      ,F....
      ,A.CAMPOARTICULO
      ,A....
      ,A....
      ,A....
    FROM LineasFacturas AS LF
      INNER JOIN Facturas AS F
        ON F.IDFACTURA = LF.FACTURAID
      INNER JOIN Articulos AS A
        ON A.IDARTICULO = LF.ARTICULOID
    WHERE F.FECHAFACTURA = '02/11/2015'

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 02-11-2015 a las 10:44:35.
Responder Con Cita
  #7  
Antiguo 02-11-2015
sowei sowei is offline
Miembro
 
Registrado: abr 2010
Posts: 21
Poder: 0
sowei Va por buen camino
Cita:
Empezado por olbeup Ver Mensaje
Hola sowei,

En SQL se puede hacer todo, lo que tienes que hacer es crearte una tabla con los campos igualmente definidos que vas a necesitar de las tres tablas y crear la SQL que recoja los campos que vas a grabar.

Código SQL [-]INSERT INTO VentaPeriodo SELECT LF.CAMPOLINEAFACTURA ,LF.... ,LF.... ,LF.... ,F.CAMPOFACTURA ,F.... ,F.... ,F.... ,A.CAMPOARTICULO ,A.... ,A.... ,A.... FROM LineasFacturas AS LF INNER JOIN Facturas AS F ON F.IDFACTURA = LF.FACTURAID INNER JOIN Articulos AS A ON A.IDARTICULO = LF.ARTICULOID WHERE F.FECHAFACTURA = '02/11/2015'


Un saludo.

Anda! Es exactamente lo que quería y no tenía ni idea de si se podía hacer.

He probado con IBExpert con una consulta sencilla grabando en una tabla temporal y HA FUNCIONADO PERFECTAMENTE !!!

Gracias a todos por las respuestas
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
Insertar registros en Firebird GustavoCruz Lazarus, FreePascal, Kylix, etc. 17 13-02-2010 21:23:23
insertar registros hxochitemol Conexión con bases de datos 1 02-06-2007 01:21:56
Como insertar registros con sql? newbery Firebird e Interbase 1 10-01-2006 14:32:30
Insertar registros en MySQL TONIAM MySQL 0 24-05-2005 15:47:49
Problemas al insertar registros con ADO sanluisme Conexión con bases de datos 0 04-03-2004 10:34:41


La franja horaria es GMT +2. Ahora son las 17:41:38.


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