Dùng câu lệnh truy vấn SQL tạo kết quả Chi tiết vật tư

Chào mn đây là bài test tts của e :

Câu thứ 5 yêu cầu truy vấn kết quả chi tiết vật tư, e sử dụng mysql lệnh như sau

SELECT MaHang, Ngay, NoiDung, SlNhap, TienNhap, SLXuat, TienXuat
		
FROM (
	SELECT MaHang, NgayNhap AS Ngay, "Nhập hàng" AS NoiDung, SoLuong as SlNhap, ThanhTien as TienNhap, 0 AS SLXuat, 0 AS TienXuat
    FROM nhaphang as tb1
UNION 
	SELECT MaHang, NgayXuat AS Ngay, "Xuất hàng" AS NoiDung, 0 AS SlNhap, 0 as TienNhap, SoLuong as SLXuat, ThanhTien AS TienXuat
    FROM xuathang as tb2
) as tb

ORDER BY MaHang, Ngay  

Nhưng còn 2 cột cuối cùng là TonCuoi và SoDu yêu cầu kết quả cộng dồn và tính cho từng sp. Mn biết chỗ này giải quyết kiểu gì không ạ ?

Cảm ơn mn!

(SlNhap - SLXuat) as TonCuoi

thêm như thế vào câu select thôi
tương tự với cột kia

update: do mình không đọc kĩ file docs nên câu trên không đúng với docs mô tả

SELECT 
    tb.*
    sum(tbs.SlNhap - tbs.SLXuat) as TonCuoi		
FROM (
	SELECT MaHang, NgayNhap AS Ngay, "Nhập hàng" AS NoiDung, SoLuong as SlNhap, ThanhTien as TienNhap, 0 AS SLXuat, 0 AS TienXuat
    FROM nhaphang as tb1
UNION 
	SELECT MaHang, NgayXuat AS Ngay, "Xuất hàng" AS NoiDung, 0 AS SlNhap, 0 as TienNhap, SoLuong as SLXuat, ThanhTien AS TienXuat
    FROM xuathang as tb2
) as tb

LEFT JOIN (
	SELECT MaHang, NgayNhap AS Ngay, "Nhập hàng" AS NoiDung, SoLuong as SlNhap, ThanhTien as TienNhap, 0 AS SLXuat, 0 AS TienXuat
    FROM nhaphang as tb1
UNION 
	SELECT MaHang, NgayXuat AS Ngay, "Xuất hàng" AS NoiDung, 0 AS SlNhap, 0 as TienNhap, SoLuong as SLXuat, ThanhTien AS TienXuat
    FROM xuathang as tb2
) as tbs
    ON tbs.Ngay >= tb2.Ngay
group by tb.MaHang, tb.Ngay, tb.NoiDung, tb.SlNhap, tb.TienNhap, tb.SLXuat, tb.TienXuat
ORDER BY tb.MaHang, tb.Ngay

cách này không hay, nhưng để làm nhanh cho qua bài tập thì là lựa chọn hợp lý

1 Like

Bạn tạo 2 biến varTonCuoi và varSoDu nhé.

Trừ như thế ko đc b à vì nó lấy kết quả cộng dồn từ trước trừ cho nhau

mình có update lại rồi né

Bạn ơi, Mình có thể xin bài test của bạn để mình tham khảo được không ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?