[MySQL] Hỏi về cách viết 1 câu query tính tổng số sản phẩm bán theo ngày.
Em có 2 table là Order và Product. Yêu cầu bài toán là liệt kê ra hết các sản phẩm trong bảng product, và ứng với mỗi ngày trong một khoảng thời gian nào đó thì tính ra tổng số lượng đã bán được của sản phẩm (như bảng* Kết quả mong muốn*)
Em không biết cách viết câu Query để có thể đưa cột ngày lên làm hàng được. Em có thử dùng câu while trong câu select nhưng nó không work, rất mong mọi người giúp đỡ.
Em cảm ơn,
Product Table:
id | name |
---|---|
1 | A |
2 | B |
3 | C |
Order Table:
id | user_id | product_id | date | quantity |
---|---|---|---|---|
1 | 1 | 1 | 2022-07-01 | 2 |
2 | 1 | 1 | 2022-07-02 | 3 |
3 | 1 | 2 | 2022-07-01 | 5 |
4 | 1 | 1 | 2022-07-02 | 2 |
5 | 1 | 1 | 2022-07-03 | 12 |
6 | 1 | 3 | 2022-07-05 | 2 |
7 | 1 | 2 | 2022-07-05 | 1 |
Kết quả mong muốn
Name | 2022-07-01 | 2022-07-02 | 2022-07-03 | 2022-07-04 | 2022-07-05 |
---|---|---|---|---|---|
A | 2 | 3 | 12 | 0 | 0 |
B | 5 | 0 | 0 | 0 | 1 |
C | 0 | 0 | 0 | 0 | 2 |
2 CÂU TRẢ LỜI
Bạn thay đổi 1 tí về kết quả mong muốn thì bài toán sẽ trở nên dễ hơn.
name | date | sum_quantity |
---|---|---|
A | 2022-07-01 | 2 |
A | 2022-07-02 | 3 |
A | 2022-07-03 | 12 |
.... | ......... | .... |
Thì khi đó SQL sẽ là
select t1.name, t2.date, sum(t2.quantity) as sum from product t1
inner join order t2 on t1.id = t2.product_id
group by t2.date
order by t1.name;
Câu SQL bên trên sẽ không chạy được vì tên bảng là order trùng với SQL keyword. Bạn nên đổi lại tên bạn cho hợp lý.
Cảm ơn bạn. nhưng mình cần hiện theo kiểu như trên á bạn.
@bichht-0889 bạn hãy query như Bạn ở trên nói. Sau đó sẽ can thiệp sắp xếp lại Array kết quả theo "kết quả mong muốn" của bạn.