Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Select anidado en INSERT

Estas en el tema de Select anidado en INSERT en el foro de Bases de Datos General en Foros del Web. Es posible meter un select dentro de un insert? INSERT INTO Facturas_Ax VALUES((select count(*) from Facturas_Ax where Año='@Año'),@Año,@Cliente,@Fecha_Emision,@Fecha_Vt o,@Periodo_Fac,@Concepto,@Tipo,@Estado,@Cobrada,@I mpuesto,@Retencion,@Ret_Garantia,@Base_Imponible) Si es posible como sería ...
  #1 (permalink)  
Antiguo 29/04/2005, 05:16
Avatar de javiermil  
Fecha de Ingreso: agosto-2004
Mensajes: 509
Antigüedad: 19 años, 8 meses
Puntos: 2
Select anidado en INSERT

Es posible meter un select dentro de un insert?

INSERT INTO Facturas_Ax VALUES((select count(*) from Facturas_Ax where Año='@Año'),@Año,@Cliente,@Fecha_Emision,@Fecha_Vt o,@Periodo_Fac,@Concepto,@Tipo,@Estado,@Cobrada,@I mpuesto,@Retencion,@Ret_Garantia,@Base_Imponible)

Si es posible como sería la nomenclatura?

Muchas gracias
  #2 (permalink)  
Antiguo 29/04/2005, 10:49
 
Fecha de Ingreso: abril-2005
Mensajes: 82
Antigüedad: 19 años
Puntos: 2
Si es posible, es mas tu puedes llenar una tabla con los datos que esten contenidos en otra tabla. La sintaxis es:

INSERT INTO tabla1 VALUES (SELECT campo1,campo2 FROM tabla2)

Ten en cuenta que los campos tienen que coincidir en el orden de insersion y tipo de dato.
  #3 (permalink)  
Antiguo 29/04/2005, 11:47
Avatar de sir_joshua  
Fecha de Ingreso: diciembre-2004
Mensajes: 411
Antigüedad: 19 años, 4 meses
Puntos: 0
tienes varias opciones, cuando la tabla de destino tiene una estructura distinta a la de origen o solo quieres llenar ciertos campos, puedes usar esto:

insert into tablad (id, nombre, salario)
select emp_id, nombre, salario)
from tablao;

cuando las tablas son identicas y deseas llenar todas las columnas, puedes usar esto:

insert into tablad select * from tablao;

puesdes usar clausulas where en cualquiera de los dos ejemplos de select.

salu2.
__________________
http://sir-joshua.hi5.com
Mex. Mex.
  #4 (permalink)  
Antiguo 27/03/2008, 03:45
 
Fecha de Ingreso: febrero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Select anidado en INSERT

Hola,
yo tengo una consulta que la hago exactamente como dicen, pero dice q la sintaxis es incorrecta, a ver si me podrían ayudar.

insert into PRODUCTOS_ATRIBUTOS
(CodigoTipo,CodigoSubtipo,Descripcion)values
(select CodigoTipo
from PRODUCTOS_TIPOS PT
where PT.Descripcion='cd',
select CodigoSubtipo
from PRODUCTOS_SUBTIPOS PS
where PS.Descripcion='album',
'nuevo atributo')


por separado los select se ejecutan correctamente, pero toda la sentencia no.

Muchas gracias por su ayuda
  #5 (permalink)  
Antiguo 27/03/2008, 07:26
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Select anidado en INSERT

Cita:
Iniciado por aisbel Ver Mensaje
Hola,
yo tengo una consulta que la hago exactamente como dicen, pero dice q la sintaxis es incorrecta, a ver si me podrían ayudar.

insert into PRODUCTOS_ATRIBUTOS
(CodigoTipo,CodigoSubtipo,Descripcion)values
(select CodigoTipo
from PRODUCTOS_TIPOS PT
where PT.Descripcion='cd',
select CodigoSubtipo
from PRODUCTOS_SUBTIPOS PS
where PS.Descripcion='album',
'nuevo atributo')


por separado los select se ejecutan correctamente, pero toda la sentencia no.

Muchas gracias por su ayuda
prueba:
insert into PRODUCTOS_ATRIBUTOS
(CodigoTipo,CodigoSubtipo,Descripcion)
select CodigoTipo
from PRODUCTOS_TIPOS PT
where PT.Descripcion='cd',
select CodigoSubtipo
from PRODUCTOS_SUBTIPOS PS
where PS.Descripcion='album',
'nuevo atributo';
  #6 (permalink)  
Antiguo 28/03/2008, 03:36
 
Fecha de Ingreso: febrero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Select anidado en INSERT

Hola,

ese codigo no funcionaba, pero ya he descubierto como es.
Por si a alguien le sirve en un futuro, lo pongo a continuación:


insert into PRODUCTOS_ATRIBUTOS
(CodigoTipo,CodigoSubtipo,Descripcion)
select
(select CodigoTipo
from PRODUCTOS_TIPOS PT
where PT.Descripcion='cd'),
(select CodigoSubtipo
from PRODUCTOS_SUBTIPOS PS
where PS.Descripcion='album'),
'nuevo atributo'

La idea es:
- Como habeis dicho, cuando tienes insert con select anidado no pones values
- Tienes que tener un select por insert, por eso, pones select y luego los otros selects son como campos dentro del select.

Muchas gracias a todos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:22.