Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Thắc mắc về joining nhiều table
#1
Em là thành viên mới, các bác vui lòng giúp đỡ tình huống sau:
Có 04 bảng khác nhau như ở dưới
1)  Bảng1: T_CODE (chứa master mã hàng)
Item_Code
A
B
C
D

2) Bảng 2: T_MONTHLY_STOCK (Chứa dữ liệu tồn kho, ở đây là tháng 9
Item_Code Qty    Month
A                  1000 201509
B                  2000 201509
C                  3000 201509

3) Bảng 3: T_SALES (Tình hình bán hàng theo từng tuần)
Item_Code Qty Week
A                  5      1

B                  4       1
A                 50     2

B                  40     2  

4) Bảng4:  T_RECEIPT (Tình hình nhận hàng theo tuần)
Item_Code Qty Week
A                  1       1
B                  2        1

A            10     2
B            20     2 

Mình muốn trả về Query như dưới đây:


Item_Code Stock In_Week_1 Out_Week_1 Balance_Week_1
A                  1000       1                     5                  996
B                  2000        2                     4                1998
C                  3000        0                     0                3000
D                        0        0                     0                      0

Mình đã thử dùng Query bằng cách liên kết các bảng nhưng kết quả trả về không đúng
Item_Code Stock In_Week_1 Out_Week_1 Balance_Week_1
A                  1000       2                   10                992
B                  2000        4                     8              1996
C                  3000        0                     0               3000
D                         0       0                     0                     0

Và query của mình như sau:

SELECT T_CODE.Item_Code
, IIf(IsNull([T_MONTHLY_STOCK]![Item_code]),0,[T_MONTHLY_STOCK]![Qty]) AS Stock
, Sum(IIf([T_RECEIPT]![Week]=1,[T_RECEIPT]![Qty],0)) AS In_Week_1
, Sum(IIf([T_SALES]![Week]=1,[T_SALES]![Qty],0)) AS Out_Week_1
, IIf(IsNull([T_CODE]![Item_Code]),0,[T_MONTHLY_STOCK]![Qty])
+Sum(IIf([T_RECEIPT]![Week]=1,[T_RECEIPT]![Qty],0))
-Sum(IIf([T_SALES]![Week]=1,[T_SALES]![Qty],0)) AS Balance_Week_1
FROM 
((T_CODE LEFT JOIN T_MONTHLY_STOCK ON T_CODE.Item_Code = T_MONTHLY_STOCK.Item_code) 
LEFT JOIN T_SALES ON T_CODE.Item_Code = T_SALES.Item_code) 
LEFT JOIN T_RECEIPT ON T_CODE.Item_Code = T_RECEIPT.Item_code


GROUP BY 
T_CODE.Item_Code
, IIf(IsNull([T_CODE]![Item_Code]),0,[T_MONTHLY_STOCK]![Qty]);

Rất mong các bác hướng dẫn thêm.
Trân trọng cảm ơn
Chữ ký của longlv longlv,gia nhập Thủ Thuật Access từ 16-10 -15.
Reply
Những người đã cảm ơn
#2
Bạn post dữ liệu lên mọi người sẽ dể dàng hỗ trợ hơn.
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname
#3
(16-10-15, 04:53 PM)tranthanhan1962 Đã viết: Bạn post dữ liệu lên mọi người sẽ dể dàng hỗ trợ hơn.

 Cảm ơn bạn. Bạn xem file giúp mình nhé  File access
Mình không biết up file lên nên đành dùng mediafile vậy 
http://www.mediafire.com/download/s65fe7...base.accdb
Chữ ký của longlv longlv,gia nhập Thủ Thuật Access từ 16-10 -15.
Reply
Những người đã cảm ơn
#4
Hình như bạn đang cố gắng xử lý access bằng dữ liệu của các bảng excel.
Nếu giữ nguyên các table như thế để xử lý cũng được nhưng làm như vậy là sai nguyên tắc access (mỗi tuần bạn phải xử lý để lọc bằng một query khác nhau, và như thế bạn đã vi phạm luật của access. Vì access là “làm một lần giải quyết cho tất cả”. Còn nếu làm theo cách của bạn mỗi tuần phải làm một query).
Giải pháp đề nghị:
Để cho dễ dàng hơn tôi sẽ chuyển hết sang tiếng việt (để làm cho nhanh).
Phân tích:
Tên hàng (Item_Code): A,B,C,D
Tồn kho (MONTHLY_STOCK) tháng 9/2015 với số lượng (Quantity) A =1000, B = 2000, C = 3000, D = 0
Nghiệp vụ: Có 2 nghiệp vụ: Nhận hàng (RECEIPT), Bán hàng (SALES)
Tuần (Week): Bạn tính tồn kho theo tuần.
Từ cơ sở dữ liệu của bạn tôi sẽ thiết kế lại như sau:
Table: có 3 table (Tên hàng – tlbTenHang, Tuần – tlbTuan, Phát sinh – tlbPhatSinh)

[Hình: 9lB1x7r.png]
 
Dữ liệu các table như sau:

[Hình: ZVj0dIq.png]
 
Trong tlbTuan có tuần 0 được xem như là tồn đầu tháng 9/2015

Mã:
Tạo query Q_Tonkho0 từ tlbPhatSinh: 
SELECT tlbPhatSinh.TenHang, tlbPhatSinh.SLNhan, tlbPhatSinh.SLBan
FROM tlbPhatSinh
WHERE (((tlbPhatSinh.Tuan)<=[Tuần]));

[Hình: wzAVqJh.png] 

Tạo query total Q_Tonkho  từ Q_Tonkho0:

Mã:
SELECT Q_Tonkho0.TenHang, Sum(Q_Tonkho0.SLNhan) AS SLNhan, Sum(Q_Tonkho0.SLBan) AS SLBan, [SLNhan]-[SLBan] AS SLTon
FROM Q_Tonkho0
GROUP BY Q_Tonkho0.TenHang;

[Hình: d4v6k3R.png]
 
Khi gọi query Q_Tonkho bạn chỉ cần điền giá trị tuần nào nó sẽ tổng hợp tồn kho đến tuần đó.

[Hình: nbnok8D.png]
 
Nếu xử lý ứng dụng cho nhiều năm bạn có thể thêm field Nam để làm điều kiện, Nếu bạn làm cho công ty nước ngoài bạn có thể đặt lại tên Field, Table theo tiếng anh (mình dịch ra tiếng việt để tiện hướng dẫn)
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname , thucgia , longlv , maidinhdan , Che_Guevara
#5
Cảm ơn @tranthanhan1962 rất nhiều. Mình sẽ làm theo cách của bạn hướng dẫn
Chữ ký của longlv longlv,gia nhập Thủ Thuật Access từ 16-10 -15.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] Xin giúp đỡ về sử dụng hàm Dlookup với nhiều điều kiện dangh5 1 72 30-11-16, 10:44 PM
Bài mới nhất: dangh5
  Hướng Dẫn Cách tạo Query để cập nhật lại thời gian trong table. ngokimhang33 9 378 28-09-16, 10:36 AM
Bài mới nhất: lamvankhanh
  [Help] Tính tổng theo điều kiện các trường trong nhiều table,đưa ra kết quả bignosevinatex 6 752 06-09-16, 10:56 PM
Bài mới nhất: maidinhdan
  So sánh 02 table/Query khoidong 14 635 05-07-16, 10:12 PM
Bài mới nhất: maidinhdan
  [Help] giúp gộp dữ liệu ở nhiều row có 1 column giống nhau trong querry phatsp 5 739 28-12-15, 11:24 PM
Bài mới nhất: PhucKK

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ