Tôi hỏi kỹ để tránh việc đưa một câu lênh T-SQL mà kết quả của nó không có ý nghĩa gì hết, rồi em áp dụng cũng không được.
Cái mấu chốt nằm ở cái table STOCK của em. Nó là tồn kho ngay tại thời điểm chạy query hay tồn đầu kỳ (từng tháng).
- Nếu là tồn đầu kỳ thì đưa vào truy vấn số lượng bán (tôi suy ra theo cái tên SOrder - Sales Order) tồn kho không chính xác vì còn phải + thêm nhập TK tính tới ngày xuất bán -> lúc đó mới có ý nghĩa: đối chiếu với tồn kho thời điểm (Quantity On Hand) trước khi xuất bán.
- Nếu đó là table tồn kho thời điểm xét thì không có gì để nói.
- Có trường hợp "MH001" bán cho các khách hàng khác không? vd KH002, KH005... Khi nhìn table KHACHHANG tôi lại nghĩ nó giống Nhà Cung Cấp và cái SORDER trở thành table Mua hàng (PURCHASE ORDER) hơn. Khi đó lại sẽ phát sinh các vấn đề khác về tổ chức lưu thông tin (hoặc do em cung cấp thông tin table liên quan quá ít nên không nhìn thấy tổ chức tổng thể của CSDL).
Nếu cái bảng kết quả em muốn là tồn kho và số lượng đặt hàng của từng nhà cung cấp thì table STOCK thiếu thông tin Mã NCC của từng Mã hàng tồn kho.
Nếu nói mỗi Mã Hàng chỉ có 1 NCC cố định nên gán Mã Hang đi theo NCC rồi như table KHACHANG, truy vấn từ Mã hàng sẽ ra mã NCC thì cũng sai vì chỉ nhìn ngắn hạn. Sau này có đổi mua của NCC khác thì theo dõi như thế nào? tồn kho NCC cũng, tồn kho NCC mới...
Tại tôi muốn hiểu rõ chút về quan hệ giữa các Table, các field như thế nào và thông tin từ em cung cấp cũng không nhiều nên hỏi tùm lum là vậy rồi mới ra được câu lệnh truy vấn. Chứ để ra kết quả như trên thì không có gì phức tạp.