2012-05-03 23 views
5

Tengo dos tablas en una base de datos de Derby que quiero consultar juntas.Consulta SQL con SUM en columna en la tabla JOINed

Orders 
+----+--------+--------------+------------+ 
| ID | UserID | PurchaseDate | TotalPrice | 
+----+--------+--------------+------------+ 
| 1 | 1 | TIMESTAMP | 7.00 | 

OrderItems 
+---------+-----------+----------+ 
| OrderID | ProductID | Quantity | 
+---------+-----------+----------+ 
| 1 |  1 |  2 | 

Quiero una consulta para devolver toda la información sobre el orden de la tabla Pedidos, así como el número total de producto asociado con ese fin.

Probé esto pensando que funcionaría pero obtengo el error - "Referencia de columna 'ID' no es válido. Cuando la lista SELECT contiene al menos un agregado, todas las entradas deben ser expresiones agregadas válidas."

SELECT 
orders.ID, orders.UserID, orders.PurchaseDate, orders.TotalPrice, SUM(Quantity) 
AS productCount 
FROM app.orders JOIN app.orderItems ON orders.ID=orderItems.OrderID 
+2

sé por qué alguien me downvoted. Explicar cómo fue en contra de las prácticas del sitio para referencia –

Respuesta

9
SELECT 
app.orders.ID, app.orders.UserID, app.orders.PurchaseDate, app.orders.TotalPrice, SUM(app.orderItems.Quantity) 
AS productCount 
FROM app.orders JOIN app.orderItems ON app.orders.ID=app.orderItems.OrderID 
group by app.orders.ID, app.orders.UserID, app.orders.PurchaseDate, app.orders.TotalPrice 
+0

Recibo el siguiente error cuando pruebo esto: Columna 'ORDERS.ID' no está en ninguna tabla en la lista FROM o aparece dentro de una especificación de unión y está fuera del alcance de la especificación de unión o aparece en una cláusula HAVING y no está en la lista GROUP BY. Si esta es una instrucción CREATE o ALTER TABLE, entonces 'ORDERS.ID' no es una columna en la tabla de destino. –

+0

Muchas gracias por su ayuda –

0

Creo que se necesita un grupo por la cláusula como:

GROUP BY orders.ID,orders.UserID,orders.PurchaseDate,orders.TotalPrice 
Cuestiones relacionadas