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 con subqueries (https://www.clubdelphi.com/foros/showthread.php?t=87938)

jdgszorro 21-03-2015 18:52:34

Insert con subqueries
 
Hola a todos,

normalmente he utilizado Oracle y estoy desarollando una aplicación con Firebird ahora y me encuntro con un problema que no se como solventar de forma óptima.

En Oracle puedo hacer perfectamente esto:

Insert into Tabla (select max(codigo)+1 from tabla2, 'Prueba',select codigo from tabla3,......

Pero en FIREBIRD no hay manera de hacer o no se como hacer estas inserciones con subqueries integradas.

Si alguien me puede ayudar se lo agradecería.

Saludos.

nlsgarcia 21-03-2015 19:07:35

jdgszorro,

¡Bienvenido al Club Delphi! :D

Te sugiero revisar la Guía de estilo de los foros, recomendada a todos los nuevos ingresos al Club Delphi.

¡Gracias por tu cooperación! :) ^\||/

Saludos,

Nelson.

nlsgarcia 21-03-2015 19:21:20

jdgszorro,

Cita:

Empezado por jdgszorro
...en Firebird...no se como hacer estas inserciones con subqueries integradas...

:rolleyes:

Revisa esta información:
Espero sea útil :)

Nelson.

ecfisa 21-03-2015 20:19:15

Hola jdgszorro.
Cita:

Empezado por jdgszorro (Mensaje 490273)
...
En Oracle puedo hacer perfectamente esto:

Insert into Tabla (select max(codigo)+1 from tabla2, 'Prueba',select codigo from tabla3,......

Pero en FIREBIRD no hay manera de hacer o no se como hacer estas inserciones con subqueries integradas.

La sintáxis para hacer lo que buscas en Firebird:
Código SQL [-]
INSERT INTO TABLA1 (CAMPO1, CAMPO2, CAMPO3, ...)
VALUES((SELECT MAX(ID) FROM TABLA2),
       (SELECT CAMPOX FROM TABLA3 WHERE ID = :PID1),
       (SELECT CAMPOY FROM TABLA4 WHERE ID = :PID2),
       ...)

Saludos :)

jdgszorro 22-03-2015 11:23:05

Muchas gracias voy a probar ahora mismo. :)

jdgszorro 22-03-2015 11:26:48

Cita:

Empezado por ecfisa (Mensaje 490280)
Hola jdgszorro.

La sintáxis para hacer lo que buscas en Firebird:
Código SQL [-]
INSERT INTO TABLA1 (CAMPO1, CAMPO2, CAMPO3, ...)
VALUES((SELECT MAX(ID) FROM TABLA2),
       (SELECT CAMPOX FROM TABLA3 WHERE ID = :PID1),
       (SELECT CAMPOY FROM TABLA4 WHERE ID = :PID2),
       ...)

Saludos :)

Funcionó perfecto, me faltaban los paréntesis para delimitar la subquery, estos son los vicios de ORACLE.

Muchas gracias de nuevo.

RONPABLO 24-03-2015 01:02:12

También puede hacerse así:
Código SQL [-]
Insert into Tabla 
Select (select max(codigo)+1 from tabla2), 'Prueba', codigo from tabla3


La franja horaria es GMT +2. Ahora son las 05:01:29.

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