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

Consulta INSERT con tabla derivada

Estas en el tema de Consulta INSERT con tabla derivada en el foro de SQL Server en Foros del Web. Hola, estoy estudiando SQL Server 2005 para rendir un examen y en el libro del que estudio tengo la siguiente inserción como ejemplo: INSERT dbo.EmployeeSales ...
  #1 (permalink)  
Antiguo 10/03/2010, 07:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Consulta INSERT con tabla derivada

Hola, estoy estudiando SQL Server 2005 para rendir un examen y en el libro del que estudio tengo la siguiente inserción como ejemplo:

INSERT dbo.EmployeeSales
SELECT 'SELECT',e.EmployeeID,c.LastName,sp.SalesYTD
FROM HumanResources.Employee AS e
INNER JOIN Sales.SalesPerson AS sp
ON e.EmployeeID = sp.SalesPersonID
INNER JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE e.EmployeeID LIKE '2%'
ORDER BY e.EmployeeID, c.LastName

(Pueden probar la consulta si tienen AdventureWorks instalada)

Mi duda es que significa el 'SELECT' (el que esté entre comillas). Ejecuté Solo el select y me devuelve una tabla con los siguientes resultados, lo que me parece algo un poco ilógico:

EmployeeID LastName SalesYTD
------ ----------- -------------------------------------------------- ---------------------
SELECT 268 Jiang 677558,4653
SELECT 275 Blythe 4557045,0459
SELECT 276 Mitchell 5200475,2313
SELECT 277 Carson 3857163,6332
SELECT 278 Vargas 1764938,9859
SELECT 279 Reiter 2811012,7151
SELECT 280 Ansman-Wolfe 0,00
SELECT 281 Ito 3018725,4858
SELECT 282 Saraiva 3189356,2465
SELECT 283 Campbell 3587378,4257
SELECT 284 Alberts 636440,251
SELECT 285 Pak 5015682,3752
SELECT 286 Varkey Chudukatil 3827950,238
SELECT 287 Mensa-Annan 1931620,1835
SELECT 288 Abbas 219088,8836
SELECT 289 Valdez 2241204,0424
SELECT 290 Tsoflias 1758385,926

(17 filas afectadas)

El INSERT no funciona porque no existe la tabla dbo.EmployeeSales, pero suponiendo que existiera y fuera de 4 columnas, con los tipos de datos correctos, insertaría el resultado tal como está arriba? Tiene alguna función espacifica el primer campo?

Por último, me gustaría saber la diferencia entre hacer un INSERT tabla y un INSERT INTO tabla.

Saludos!
  #2 (permalink)  
Antiguo 10/03/2010, 11:04
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Consulta INSERT con tabla derivada

Yo pienso que es simplemente para indicar que los registros son insertados desde un SELECT y no mediante VALUES.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 10/03/2010, 20:21
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Consulta INSERT con tabla derivada

Ok, queda aclarado eso. Una consulta mas relacionada con inserciones: cuando trato de hacer inserciones de más de una fila, me tira el siguiente error:

Mens. 102, Nivel 15, Estado 1, Línea 2
Sintaxis incorrecta cerca de ','.


El ejemplo particular con el que estoy trabajando es el de agregar a la tabla Person.StateProvince de AdventureWorks 2 registros, la consulta sería:

INSERT INTO Person.StateProvince (StateProvinceCode, CountryRegionCode, Name, TerritoryID)
VALUES('AR', 'UY', 'Jujuy', 1),('AR', 'MZ', 'Mendoza', 1)


Para los que no tengan AdventureWorks, los campos son (en orden):
int (identity)
nchar(3)
nvarchar(3)
flag(bit) (calculada)
nvarchar(50)
int
uniqueidentifier (calculada)
datetime (calculada)

Donde está el error?
Probé con un ejemplo de la web de Microsoft que no hace uso de AdventureWorks, sino que crea una tabla y luego inserta 3 registros mediante un insert y tampoco funciona (y eso que es copy paste)! Me esta volviendo loco esto!
  #4 (permalink)  
Antiguo 10/03/2010, 22:22
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Consulta INSERT con tabla derivada

Esa forma solo es posible en SQL 2008.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: insert, tablas
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




La zona horaria es GMT -6. Ahora son las 23:52.