2012-05-03 43 views
5

Tôi có hai bảng trong cơ sở dữ liệu derby mà tôi muốn truy vấn cùng nhau.Truy vấn SQL có SUM trên cột trong bảng JOIN

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

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

Tôi muốn truy vấn trả lại tất cả thông tin theo thứ tự từ bảng Đơn hàng cũng như tổng số sản phẩm được liên kết với đơn đặt hàng đó.

Tôi đã thử suy nghĩ này sẽ hoạt động nhưng gặp lỗi - "Tham chiếu cột 'ID' không hợp lệ. Khi danh sách SELECT chứa ít nhất một tổng hợp thì tất cả các mục phải là biểu thức tổng hợp hợp lệ".

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

dunno lý do tại sao một người nào đó downvoted tôi. Lời giải thích giải thích cách chống lại thực tiễn của trang web để tham khảo –

Trả lời

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

Tôi nhận được lỗi sau khi tôi thử điều này: Cột 'ORDERS.ID' không nằm trong bất kỳ bảng nào trong danh sách TỪ hoặc xuất hiện trong thông số tham gia và nằm ngoài phạm vi của đặc tả kết nối hoặc xuất hiện trong mệnh đề HAVING và không nằm trong danh sách GROUP BY. Nếu đây là câu lệnh CREATE hoặc ALTER TABLE thì 'ORDERS.ID' không phải là một cột trong bảng đích. –

+0

Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn –

0

tôi nghĩ rằng bạn cần một nhóm bởi điều khoản như:

GROUP BY orders.ID,orders.UserID,orders.PurchaseDate,orders.TotalPrice 
Các vấn đề liên quan