Tôi có 4 bảng.Giá trị tổng và đơn đặt hàng không tìm nạp đúng cách trong mysql
table_orders
order_id
customer_id
order_datetime
order_payment_type
order_delivery_date
delivery_time_slot
table_order_details
order_id
product_id
varient_id
quantity
product_mrp
product_sell_price
product_name
table_order_status
order_id
status_id
status_datetime
table_order_status_values
value_id
value_desc
Tôi muốn nhận được id đơn đặt hàng, số tiền đặt hàng, ngày đặt hàng, số lượng đặt hàng, thời gian đặt hàng, giá trị_desc.
Tôi đang chạy truy vấn này.
SELECT oo.order_id, oo.amount, oo.date, oo.quantity, oo.time, value_desc
FROM
(
SELECT s.order_id, SUM(OD.product_sell_price * OD.quantity) as amount,
DATE_FORMAT(o.order_datetime, '%d/%m/%Y') as date, SUM(OD.quantity)
as quantity, TIME(o.order_datetime) as time, MAX(status_id) as laststatus
FROM table_orders o
INNER JOIN table_order_details AS OD ON o.order_id = OD.order_id
INNER JOIN table_order_status s ON s.order_id = o.order_id
GROUP BY o.order_id
)oo
INNER JOIN table_order_status_values ON value_id = laststatus
order by order_id DESC
mẫu dữ liệu:
Table_orders
1 1 2015:12:12:19:42:47 1 2015:12:14 1
table_order_details
1 12 3 1 21.00 20.00 abcd
1 13 2 2 100.00 90.00 efgh
table_order_status
1 1 2015:12:12:19:42:47
1 2 2015:12:12:20:42:47
table_order_status_values
1 NEW ORDER
2 CONFIRM
3 Delivered
Với đầu ra truy vấn trên là:
1 400.00 12:12:2015 6 19:42:47 CONFIRM
Nhưng dự kiến sản lượng là:
1 200.00 12:12:2015 3 19:42:47 CONFIRM
Tôi nhận được số tiền đặt hàng và giá trị khối lượng đặt hàng gấp đôi (hoặc ba lần) dựa trên số trạng thái cho thứ tự đã cho.
Cách sửa lỗi này? Bất kỳ trợ giúp sẽ được đánh giá cao.
bạn có thể chỉ cho một đầu ra ví dụ? Nó có thể được gây ra bởi sự tham gia vào 'table_order_status'. Có lẽ bạn chỉ cần để có được tình trạng mới nhất, không phải tất cả các giá trị trung gian –
@ AlexTartan, tôi đã nhận được quan điểm của bạn. Nhưng tôi đang sử dụng MAX (status_id) để có được trạng thái cuối cùng cho thứ tự đó. –
Mặc dù không đúng, bạn * có thể * sử dụng 'CHỌN khác biệt oo.order_id ...'. Hoặc cố gắng tham gia vào một subselect của 'table_order_status' đã được nhóm lại theo order_id, thay vì toàn bộ bảng. Nếu bạn quản lý để thiết lập một SQL Fiddle (http://sqlfiddle.com/) tôi có thể xem –