[Giúp đỡ] Sử dụng hàm SUM join table trả về giá trị trùng lặp SQL

An.BA

Thành viên mới
Tham gia ngày
15 Tháng chín 2018
Bài viết
21
Thích
1
Điểm
15
#1
1547216839210.png
Em có 1 bảng product và 1 bảng sale như trên,
Mọi người giúp em làm thế nào để trả về kết quả như sau ạ,

1547216852366.png

Em cảm ơn!
 

Hai Lúa Miền Tây

Chuyên gia GPE
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,177
Thích
13,909
Điểm
1,910
#2
View attachment 210825
Em có 1 bảng product và 1 bảng sale như trên,
Mọi người giúp em làm thế nào để trả về kết quả như sau ạ,

View attachment 210826

Em cảm ơn!
Bài toán này ngộ, hiếm ai dùng như bạn.
SQL:
SELECT aa.code,
       aa.price,
       bb.saleoff
FROM   (SELECT code,
               SUM(price) AS Price
        FROM   product
        GROUP  BY code) aa
       INNER JOIN (SELECT code,
                          SUM(saleoff) AS saleoff
                   FROM   sale a
                          INNER JOIN product b
                                  ON a.id = b.id
                   GROUP  BY code) bb
               ON aa.code = bb.code
 

An.BA

Thành viên mới
Tham gia ngày
15 Tháng chín 2018
Bài viết
21
Thích
1
Điểm
15
#3
Em cảm ơn ạ, em làm như vậy cũng là theo yêu cầu của người dùng thôi ạ :)
Bài đã được tự động gộp:

Tiện đây bác cho e hỏi là
1547282230892.png 1547282251474.png

2 bảng như này thì làm thế nào để truy vấn nó ra kết quả như sau ạ
1547282279621.png
kết quả truy vấn này bên phát sinh nó tách ra 1 cột, bên thu tiên nó tách ra 1 cột ý ạ,
Em cảm ơn bác nhiều
 
Lần chỉnh sửa cuối:

VetMini

Thành viên gạo cội
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
5,944
Thích
6,851
Điểm
560
#4
Bài toán này ngộ, hiếm ai dùng như bạn.
SQL:
SELECT aa.code,
       aa.price,
       bb.saleoff
FROM   (SELECT code,
               SUM(price) AS Price
        FROM   product
        GROUP  BY code) aa
       INNER JOIN (SELECT code,
                          SUM(saleoff) AS saleoff
                   FROM   sale a
                          INNER JOIN product b
                                  ON a.id = b.id
                   GROUP  BY code) bb
               ON aa.code = bb.code
Cái này theo CSDL LH thì khong hẳn ngộ lắm. Chỉ là người dùng đặt tên trường không đúng cho nên thấy nó lạ.
Có thể tạm hiểu TP là sản phẩm và MY là phân loại (hoặc kho gì đó).
Điển hình MBY001 có hai món hàng là TP0001 và TP0002; món TP0001 được bán giảm giá (saleoff - đáng lẽ phải là sales discount) 3 lần
Khi hiểu như thế thì bảng kết quả chỉ là tổng hợp sales theo phân loại thôi.
-> Group Sum Sales (Discount?) theo ID, Join với Product, Group Sum lần nữa theo phân loại.

Chú thích:
Danh: produce là rau trái, product mới là sản phẩm
Động: produce là sản xuất
 

An.BA

Thành viên mới
Tham gia ngày
15 Tháng chín 2018
Bài viết
21
Thích
1
Điểm
15
#5
Cái này theo CSDL LH thì khong hẳn ngộ lắm. Chỉ là người dùng đặt tên trường không đúng cho nên thấy nó lạ.
Có thể tạm hiểu TP là sản phẩm và MY là phân loại (hoặc kho gì đó).
Điển hình MBY001 có hai món hàng là TP0001 và TP0002; món TP0001 được bán giảm giá (saleoff - đáng lẽ phải là sales discount) 3 lần
Khi hiểu như thế thì bảng kết quả chỉ là tổng hợp sales theo phân loại thôi.
-> Group Sum Sales (Discount?) theo ID, Join với Product, Group Sum lần nữa theo phân loại.

Chú thích:
Danh: produce là rau trái, product mới là sản phẩm
Động: produce là sản xuất
Đúng là bác hiểu ý em rồi đấy ạ, vì mỗi một mặt hàng có thể có 1 hoặc nhiều loại sale
 
Top