2011-06-15 20 views
34

estoy buscando ayuda en el problema siguiente: que tienen dos mesas Table_1 columnas son itemid, locationid, quantityInsertar datos en la tabla con el resultado de otra consulta de selección

Table_2 columnas son itemid, location1, location2, location3

quiero copiar datos de Table_1 (sólo quantity columna) en Table_2 (en location1 columna). El itemid es el mismo en ambas tablas (Table_1 tiene identificadores de elementos duplicados) por lo que es la razón por la que quiero copiar a una nueva tabla y mantener toda la cantidad en una sola fila con cada ubicación como columna. Estoy utilizando la consulta a continuación, pero no funciona

INSERT INTO 
Table_2(location1) 
(
SELECT qty 
FROM Table_1 
WHERE locationid = 1 AND Table_1.locationid = Table_2.locationid 
) 

Respuesta

78

Si table_2 está vacía, vuelva a intentar la instrucción de inserción siguiente:

insert into table_2 (itemid,location1) 
select itemid,quantity from table_1 where locationid=1 

Si table_2 ya contiene los valores itemid, a continuación, intente esta actualización declaración:

update table_2 set location1= 
(select quantity from table_1 where locationid=1 and table_1.itemid = table_2.itemid) 
+0

gracias. estaba intentando la instrucción de inserción en lugar de la declaración de actualización. – mmdel

+0

Gracias, Su código es útil – Thoman

+1

Esto es suficiente si tiene las mismas columnas: 'inserte en la tabla_2 seleccione itemid, cantidad de la tabla_1 donde locationid = 1' – Tarik

0
INSERT INTO `test`.`product` (`p1`, `p2`, `p3`) 
SELECT sum(p1), sum(p2), sum(p3) 
FROM `test`.`product`; 
-2

A continuación se muestra una ejemplo de tal consulta:

INSERT INTO [93275].[93276].[93277].[93278] ([Mobile Number], [Mobile Series], [Full Name], [Full Address], [Active Date], company) IN 'I:\For Test\90-Mobile Series.accdb 
SELECT [1].[Mobile Number], [1].[Mobile Series], [1].[Full Name], [1].[Full Address], [1].[Active Date], [1].[Company Name] 
FROM 1 
WHERE ((([1].[Mobile Series])="93275" Or ([1].[Mobile Series])="93276")) OR ((([1].[Mobile Series])="93277"));OR ((([1].[Mobile Series])="93278")); 
+0

Bienvenido a Stack Overflow. Dos cosas en este año. 1) el código debe ser formateado. Sangúelo por cuatro espacios. 2) Lo mejor es explicar * por qué * tu código resuelve el problema del que pregunta. –

Cuestiones relacionadas