Insert Into Tabla (Campo) Values (Subconsulta) se puede?

22/03/2006 - 14:18 por Yan Cantuarias | Informe spam
Hola amigos, estoy tratando de hacer el siguiente insert into

Insert Into MiTabla (Campo1) Values ((Select CampoX from MiTabla2 Where
CampoX='XXX'))

y me muestra el siguiente error... ya no se que hacer el error es:

"Server: Msg 1046, Level 15, State 1, Line 1
No se permiten subconsultas en este contexto. Sólo se admiten expresiones
escalares."


Por favor ayudenme, es realemte urgente...
Gracias
Yan

Preguntas similare

Leer las respuestas

#1 Maxi
22/03/2006 - 14:23 | Informe spam
Si se puede pero es asi:

Insert Into MiTabla (Campo1) Select CampoX from MiTabla2 Where
CampoX='XXX'




Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Yan Cantuarias" escribió en el mensaje
news:
Hola amigos, estoy tratando de hacer el siguiente insert into

Insert Into MiTabla (Campo1) Values ((Select CampoX from MiTabla2 Where
CampoX='XXX'))

y me muestra el siguiente error... ya no se que hacer el error es:

"Server: Msg 1046, Level 15, State 1, Line 1
No se permiten subconsultas en este contexto. Sólo se admiten expresiones
escalares."


Por favor ayudenme, es realemte urgente...
Gracias
Yan

Respuesta Responder a este mensaje
#2 Yan Cantuarias
22/03/2006 - 14:33 | Informe spam
Hola Maxi, gracias por responder...
el tema es que quise hacer mi pregunta sencilla, pero como seria si quiero
algo asi:

Insert Into MiTabla (Campo1, Campo2) Values ((Select CampoX from MiTabla2
Where CampoX='XXX'), (Select CampoY from MiTabla3 Where CampoY='YYY'))

se puede?



"Maxi" escribió en el mensaje
news:
Si se puede pero es asi:

Insert Into MiTabla (Campo1) Select CampoX from MiTabla2 Where
CampoX='XXX'




Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Yan Cantuarias" escribió en el mensaje
news:
Hola amigos, estoy tratando de hacer el siguiente insert into

Insert Into MiTabla (Campo1) Values ((Select CampoX from MiTabla2 Where
CampoX='XXX'))

y me muestra el siguiente error... ya no se que hacer el error es:

"Server: Msg 1046, Level 15, State 1, Line 1
No se permiten subconsultas en este contexto. Sólo se admiten expresiones
escalares."


Por favor ayudenme, es realemte urgente...
Gracias
Yan





Respuesta Responder a este mensaje
#3 Henry de Sousa
22/03/2006 - 14:56 | Informe spam
Hola que tal.
Así al vuelo lo que se me ocurre son dos cosas.

1. Haces un INNER JOIN entre tus tablas 2 y 3 si tienes una campo que te
permita unir ambas tablas.
Luego el INSERT INTO te quedaría igual que te indicaron arriba.

2. Asignas a unas variables el valor que obtienes de las tablas 2 y 3 y
luego lo insertas en tu tabla 1.

Ejemplo:

Declare @var1 AS varchar
Declare @var2 AS varchar

SELECT @var1 = CampoX from MiTabla2 Where CampoX='XXX'
SELECT @var2 = CampoX from MiTabla3 Where CampoY='YYY'

Ya luego usas estas variables en tu INSERT INTO:
Insert Into MiTabla (Campo1,Campo2) Values (@var1,@var2)

Saludos...

"Yan Cantuarias" wrote:

Hola Maxi, gracias por responder...
el tema es que quise hacer mi pregunta sencilla, pero como seria si quiero
algo asi:

Insert Into MiTabla (Campo1, Campo2) Values ((Select CampoX from MiTabla2
Where CampoX='XXX'), (Select CampoY from MiTabla3 Where CampoY='YYY'))

se puede?



"Maxi" escribió en el mensaje
news:
> Si se puede pero es asi:
>
> Insert Into MiTabla (Campo1) Select CampoX from MiTabla2 Where
> CampoX='XXX'
>
>
>
>
> Salu2
> Maxi [MVP SQL SERVER]
> www.sqlgurus.org
>
>
> "Yan Cantuarias" escribió en el mensaje
> news:
>> Hola amigos, estoy tratando de hacer el siguiente insert into
>>
>> Insert Into MiTabla (Campo1) Values ((Select CampoX from MiTabla2 Where
>> CampoX='XXX'))
>>
>> y me muestra el siguiente error... ya no se que hacer el error es:
>>
>> "Server: Msg 1046, Level 15, State 1, Line 1
>> No se permiten subconsultas en este contexto. Sólo se admiten expresiones
>> escalares."
>>
>>
>> Por favor ayudenme, es realemte urgente...
>> Gracias
>> Yan
>>
>
>



Respuesta Responder a este mensaje
#4 Leonardo Azpurua [mvp vb]
22/03/2006 - 16:13 | Informe spam
"Yan Cantuarias" escribió en el mensaje
news:
Hola Maxi, gracias por responder...
el tema es que quise hacer mi pregunta sencilla, pero como seria si quiero
algo asi:

Insert Into MiTabla (Campo1, Campo2) Values ((Select CampoX from MiTabla2
Where CampoX='XXX'), (Select CampoY from MiTabla3 Where CampoY='YYY'))

se puede?



Hola.

Si se pudiera, seria equivalente a:

INSERT INTO MiTabla (Campo1, Campo2) VALUES ('XXX', 'YYY')

[suponiendo que al menos una fila contiene el valor especificado en cada una
de las tablas]

Hay dos opciones, pero ambas son logicamente absurdas:

INSERT INTO MiTabla (Campo1, Campo2)
SELECT Tabla1.Campo1, Tabla2.Campo2
FROM Tabla1, Tabla2
WHERE Tabla1.Campo1 = 'XXX' OR Tabla2.Campo2 = 'YYY'

[el resultado de esta consulta son todos los registros de Tabla1 mas todos
los registros de Tabla2, los primeros con XXX en campo1 y el valor original
de Tabla2.Campo2, y los segundos con el valor original de Tabla1.Campo1 y
YYY en Campo2]

o bien

INSERT INTO MiTabla (Campo1, Campo2)
SELECT Tabla1.Campo1, Tabla2.Campo2
FROM Tabla1, Tabla2
WHERE Tabla1.Campo1 = 'XXX' AND Tabla2.Campo2 = 'YYY'

[que si bien es sintácticamente aceptable, nunca produce nada].

El SELECT que especifica los valores a agregar mediante un INSERT INTO puede
ser tan complejo como lo requieras, pero para consultas con dos o mas tablas
deberías especificar una relacion entre al menos una columna de cada tabla:
de lo contrario corres el riesgo de obtener un producto cartesiano (un
conjunto de registros cuya cardinalidad es el producto del numero de
registros de cada tabla), un conjunto vacío, o un conjunto de resultados
absurdo.

Un ejemplo de INSERT INTO con un SELECT de tres tablas puede ser:

INSERT INTO Articulos (Codigo, Descripcion, Existencia, Linea)
SELECT Productos.Codigo, Productos.Descripcion,
SUM(ExUbic.Existencia), Lineas.LineaI
FROM Productos, ExUbic, Lineas
WHERE Productos.Codigo = ExUbic.CodigoI
AND Productos.Linea = Lineas.LineaV
GROUP BY Codigo, Descripcion, LineaI


Salud!
Respuesta Responder a este mensaje
#5 Penta
22/03/2006 - 16:50 | Informe spam
INSERT INTO MiTabla (Campo1, Campo2)
SELECT Tabla1.Campo1, Tabla2.Campo2
FROM Tabla1, Tabla2
WHERE Tabla1.Campo1 = 'XXX' AND Tabla2.Campo2 = 'YYY'

[que si bien es sintácticamente aceptable, nunca produce nada].
Que significa esto ? no lo comprendi , como no produce nada ?

Atte.
Penta.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida