Hỏi về cập nhật trong CSDL vào 2 bảng.

Liên hệ QC

hiroki

Thành viên mới
Tham gia
20/5/11
Bài viết
9
Được thích
0
Hiện mình đang làm đề tài QLBH có CSDL như sau:

nhapkho(mank,ngaynhap,tong)
chitietnhapkho(mank,mahang,soluong)
xuatkho(maxk,ngayxuat,tong)
chitietxuatkho(maxk,mahang,soluong)
hanghoa(mahang,tenhang,soluong,dongia)

Mình muốn hỏi các bạn là làm sao để mỗi khi nhập hàng(mỗi lần nhập thì sẽ ghi dữ liệu vào 2 bảng nhapkho, chitietnhapkho) thì soluong ở bảng chitietnhapkho sẽ cập nhật vào soluong ở bảng hanghoa?
Cảm ơn các bạn nhiều -\\/.
 
Hiện mình đang làm đề tài QLBH có CSDL như sau:

nhapkho(mank,ngaynhap,tong)
chitietnhapkho(mank,mahang,soluong)
xuatkho(maxk,ngayxuat,tong)
chitietxuatkho(maxk,mahang,soluong)
hanghoa(mahang,tenhang,soluong,dongia)

Mình muốn hỏi các bạn là làm sao để mỗi khi nhập hàng(mỗi lần nhập thì sẽ ghi dữ liệu vào 2 bảng nhapkho, chitietnhapkho) thì soluong ở bảng chitietnhapkho sẽ cập nhật vào soluong ở bảng hanghoa?
Cảm ơn các bạn nhiều -\\/.
Đọc rồi liên tưởng, rồi ... xỉu.
Bạn hỏi như mơ, sao không gởi file mẫu lên để người khác dễ hiểu.
 
Hiện mình đang làm đề tài QLBH có CSDL như sau:

nhapkho(mank,ngaynhap,tong)
chitietnhapkho(mank,mahang,soluong)
xuatkho(maxk,ngayxuat,tong)
chitietxuatkho(maxk,mahang,soluong)
hanghoa(mahang,tenhang,soluong,dongia)

Mình muốn hỏi các bạn là làm sao để mỗi khi nhập hàng(mỗi lần nhập thì sẽ ghi dữ liệu vào 2 bảng nhapkho, chitietnhapkho) thì soluong ở bảng chitietnhapkho sẽ cập nhật vào soluong ở bảng hanghoa?
Cảm ơn các bạn nhiều -\\/.

Table hanghoa không cần field soluong, chỉ cần mahang, tenhang, donvitinh, có thể có dongia.
Trong đó trường mahang là trường khoá, nghĩa là duy nhất. Bạn cho soluong vào đó làm gì? Cộng dồn à? Hãy tạo 1 query làm chuyện đó (Sum).
 
Đấy là sơ đồ quan hệ CSDL của mình.
Mình muốn lấy dữ liệu ở trường sl (1) qua slton (2) (ý mình là nhập vào bao nhiêu hàng thì bán chừng đó, chứ các CSDL # toàn nhập sl thủ công).
VD trong bảng ctnhapkho:
mank mahang sl
01 01 10
01 01 10

02 02 05
Giả sử mình lấy sl của mahang 01 qua bên sl (2) của bảng hanghoa thì sử dụng truy vấn như thế nào? )(&&@@

1 điều nữa có lẽ càng đau đầu hơn. VD tiếp cho dễ hiểu: giả sử mahang 01 có slton là 20, mình bán đi 10 thì slton sẽ còn lại 10, lúc đó mình nhập tiếp vào bảng ctnhapkho:
mank mahang sl
01 01 10
01 01 10
02 02 05
03 01 10
Vậy thì lúc cập nhật slton sẽ là:
(10+10) -> mank 01
10 -> slton bảng hanghoa
10 -> mank 02
TC: 40 nhưng thực chất chỉ là 20 mà thôi (slton + mank 02)
---> Làm thế nào để ko cập nhật lại những sl cũ?
Ý tưởng của mình là vậy, hơi rối rắm. Bạn nào có cách giải quyết hay hơn thì chia sẻ với mình nhé. -\\/.
Cảm ơn các bạn nhiều.
 

File đính kèm

  • hoi.jpg
    hoi.jpg
    52.9 KB · Đọc: 65
2 table nhapkho và xuatkho gộp lại thành 1 table: ma_xn, SoCT, ngay, KH_NCC, Tongtien. Key là SoCT
Trong đó ma_xn chỉ gồm 2 ký hiệu để phân biệt nhập và xuất. Sau này căn cứ vào đó tách tongtien nhập và tổng tiền xuất

2 table chitietnhap và chitiet xuất gộp lại thành 1 table chitietNX: ID, SCT, MaHH, Sluong, Dongia, thanhtien
Key là ID, trường liên kết với table trên là SCT

Nhập liệu cùng lúc vào 2 table này.

Số tồn sẽ phải tính bằng tồn đầu + nhập - xuất, không thể làm kiểu mỗi lần mỗi cộng dồn vào 1 field.
 
2 table nhapkho và xuatkho gộp lại thành 1 table: ma_xn, SoCT, ngay, KH_NCC, Tongtien. Key là SoCT
Trong đó ma_xn chỉ gồm 2 ký hiệu để phân biệt nhập và xuất. Sau này căn cứ vào đó tách tongtien nhập và tổng tiền xuất

2 table chitietnhap và chitiet xuất gộp lại thành 1 table chitietNX: ID, SCT, MaHH, Sluong, Dongia, thanhtien
Key là ID, trường liên kết với table trên là SCT

Nhập liệu cùng lúc vào 2 table này.

Số tồn sẽ phải tính bằng tồn đầu + nhập - xuất, không thể làm kiểu mỗi lần mỗi cộng dồn vào 1 field.
Nhưng mà mình đã lỡ phân tích TKHT theo hướng 2 table rồi, với lại mình thấy ng` ta thiết kế cũng toàn nhập - xuất chứ có nhập lại thành 1 đâu.
Cái khó của mình là ko bít lấy sl như thế nào cho đúng.
 
2 table cũng được, làm query khó hơn 1 chút, nhưng vẫn phải làm riêng để ra tổng nhập, tổng xuất, ra tồn cuối, không cập nhập số lượng nhập xuất vào DMHH
 
2 table cũng được, làm query khó hơn 1 chút, nhưng vẫn phải làm riêng để ra tổng nhập, tổng xuất, ra tồn cuối, không cập nhập số lượng nhập xuất vào DMHH
mình cũng biết vậy, bạn có thể viết query giúp mình đc ko? mình nghĩ hoài ko ra :(
 
DMHH left join chitietnhap left join chitietxuat
DMHH.Mahang, DMHH.Tenhang, DMHH.Tondau + Sum(chitietnhap.sluong) - Sum(Chitietxuat.Sluong)

Không có file, khó viết.
 
DMHH left join chitietnhap left join chitietxuat
DMHH.Mahang, DMHH.Tenhang, DMHH.Tondau + Sum(chitietnhap.sluong) - Sum(Chitietxuat.Sluong)

Không có file, khó viết.
Đây là hình CSDL của mình, bạn giúp mình 1 tí nhe /-*+/
Đơn giản mình chỉ cần sl lấy từ bảng ctnhapkho thôi (giả sử ko có trường slton ở bảng hanghoa cũng đc).
 

File đính kèm

  • 212.JPG
    212.JPG
    62.7 KB · Đọc: 63
SELECT HH.Mahang, HH.Tenhang, HH.Slton + Sum(ctietnhapkho.sl) - Sum(ctiethoadon.sl) AS Ton
FROM (HH LEFT JOIN ctietnhapkho ON HH.Mahang = ctietnhapkho.Mahang) LEFT JOIN ctiethoadon ON HH.MS = ctiethoadon.Mahang
GROUP BY HH.Mahang, HH.Tenhang;
 
SELECT HH.Mahang, HH.Tenhang, HH.Slton + Sum(ctietnhapkho.sl) - Sum(ctiethoadon.sl) AS Ton
FROM (HH LEFT JOIN ctietnhapkho ON HH.Mahang = ctietnhapkho.Mahang) LEFT JOIN ctiethoadon ON HH.MS = ctiethoadon.Mahang
GROUP BY HH.Mahang, HH.Tenhang;
cảm ơn bạn đã nhiệt tình giúp đỡ
 
query mình đã sửa lại:
SELECT hanghoa.mahang, hanghoa.tenhang, hanghoa.slton + Sum(ctnhapkho.sl) - Sum(cthoadon.sl) AS Ton
FROM (hanghoa LEFT JOIN ctnhapkho ON hanghoa.mahang = ctnhapkho.mahang) LEFT JOIN cthoadon ON hanghoa.mahang = cthoadon.mahang
GROUP BY hanghoa.mahang, hanghoa.tenhang;

dính lỗi này bạn ơi
Column 'hanghoa.slton' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
 
Bạn đang xài CSDL gì? SQL server, Fox, hay cái gì? câu lệnh SQL này tôi viết trong môi trường Access, bạn phải tuỳ chỉnh theo cái đã học.
 
Bạn đang xài CSDL gì? SQL server, Fox, hay cái gì? câu lệnh SQL này tôi viết trong môi trường Access, bạn phải tuỳ chỉnh theo cái đã học.
mình dùng sql, cú pháp cũng giống nhau mà
bạn có thể giải thích về tồn đầu tồn cuối đc ko?
làm sao để có thể lấy sl mà ko lấy lại những dữ liệu mà mình đã lấy?
 
Web KT
Back
Top Bottom