-
11-19-2009, 09:48 AM #1
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Tôi có một vấn để nhờ các PRO giúp đỡ:
Tôi có một table theo dõi mua hàng (THEODOI) của các khách hàng, gồm MSKH, HOTEN, NG_MUA, MAHANG, SOTIEN. Mỗi lần có khách hàng mua hàng là tôi lại cập nhập tiếp vào.
Tôi muốn lọc ra lần mua hàng cuối cùng (ngày mua cuối cùng) của các khách hàng để đánh giá xem bao lâu rồi khách hàng này chưa mua hàng.
Các PRO giúp tôi với nhé.View more random threads:
- Giúp mình sort tren listbox vớii
- xuất dữ liệu ra máy in qua cổng com (sử dụng winsock)
- Nút OfficeLink bị disable
- Đăng nhập sai 5 lần chờ 15 phút
- Thay đổi kích cỡ khi ở chế độ kích cỡ màn hình khác nhau?
- Đóng gói access
- lấy dử liệu từ file excel sang table của acess
- Anh em cho em xin cơ sở dữ liệu của một chương trình kế toán kho với!
- Setup khổ giấy máy in kim
- Lấy Ngày làm việc khi đăng nhập
-
11-20-2009, 04:32 AM #2
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Bạn làm cái query:
SELECT MSKH, Max(ng_mua) AS [ngay mua cuoi cung]
FROM tblmuahang
GROUP BY MSKH;
-
11-20-2009, 04:49 AM #3
Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
hay dung phan mem nay, ko phai suy nghi nhieu, co mọi báo cáo mà bạn cần. "metadata.com.vn/setupmda939.exe" 'minhhoan1010@yahoo.com" co j cu nhan tin nghen, tôi sẽ hỗ trợ bạn suốt quá trình sử dụng, kể cả dùng thử "0933.115.234"
-
11-20-2009, 05:45 AM #4
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Gửi bởi muontennguoi
-----------------------------------------------------------------------------------------
Các bác PRO thử giúp em xem ý tưởng như thế này liệu có được không:
Quét table (tạo vòng lặp) và đặt 2 biến để so sánh: tại bản ghi thứ nhất gán biến cho MSKH và ngaymuahang; sau đó quét: nếu gặp MSKH=bien(1), so sánh nếu ngaymuahang>bien(2), gán lại biến. Khi quét hết ta sẽ lấy được MSKH với ngaymuahang (bien2) lớn nhất. Append vào một table.
Quay lại vòng lặp. Tôi thấy phức tạp quá, chắc mình không làm được. Các PRO xem xét giúp nhé.
Đồng thời, các PRO cho xin đoạn code quét table để lấy record có giá trị primarykey trùng với biến.
-
11-20-2009, 04:10 PM #5
Banned
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Ý tưởng của bạn cũng sẽ cho kết quả, nhưng tốn nhiều Time lắm, nhất là khi CSDL của bạn có nhiều bản ghi. Bạn thử truy vãn sau nhé:
SELECT THEODOI.MSKH, Last(THEODOI.HOTEN) AS HOTEN, Last(THEODOI.NG_MUA) AS NG_MUA, Last(THEODOI.MAHANG) AS MAHANG, Last(THEODOI.SOTIEN) AS SOTIEN
FROM THEODOI INNER JOIN [SELECT THEODOI.MSKH, Max(THEODOI.NG_MUA) as NgayCuoi FROM THEODOI GROUP BY THEODOI.MSKH]. AS tblNgayCuoi ON (tblNgayCuoi .NgayCuoi = THEODOI.NG_MUA) AND (THEODOI.MSKH = tblNgayCuoi .MSKH)
GROUP BY THEODOI.MSKH;
-
11-20-2009, 05:56 PM #6
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Đúng là ý tưởng của tôi điên rồ thật, mới chạy có mấy trăm bản ghi mà chậm lắm.
Tôi làm theo cách của bác DONGNAMND. Các bác thử xem giúp code này nhé:
- Tạo tblNGAYCUOI:
Mã:SELECT MaKH, Max(ngaymua) AS ngaycuoi INTO tblNGAYCUOI FROM tblTHEODOI GROUP BY MaKH
Mã:SELECT tblTHEODOI.MSKH, tblTHEODOI.HOTEN, tblTHEODOI.NGAYMUA, tblTHEODOI.SOTIEN FROM tblTHEODOI INNER JOIN tblNGAYCUOI ON (tblTHEODOI.ngaymua = tblNGAYCUOI.ngaycuoi) AND (tblTHEODOI.MSKH = tblNGAYCUOI.MSKH;
-
11-20-2009, 06:07 PM #7
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Gửi bởi haquocquan
Trong query lấy ngày cuối bạn có thể không cần INTO tblNGAYCUOI
Thay vào đó hãy đặt tên cho query đó là tblNGAYCUOI.
Máy chỉ lưu lại 1 dòng lệnh thay vì phải lưu lại cả 1 table nháp.
Cắt lệnh query dài nhằng ra thành những đơn vị nhỏ sẽ có thể dùng lại cho việc khác được thuận tiện.
Lấy ví dụ nếu như 1 khách hàng có thể mua hàng nhiều lần trong cùng 1 ngày, khi đó bạn cần 1 cái query nho nhỏ để sum số tiền mua của 1 người trong 1 ngày.
Cái query đó có thể sẽ dùng cho nhiều báo cáo.
Trong cái báo cáo ban đầu của bạn có thể bạn sẽ cần Inner Join nó vào tiếp.
-
11-20-2009, 08:16 PM #8
Junior Member
- Ngày tham gia
- Dec 2015
- Bài viết
- 2
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Gửi bởi muontennguoi
Đoạn code này chính là query tblNGAYCUOI phải không bác. Tức là tạo một query ảo có đúng không ạ? Em tạm gọi query trên là query ảo, có cách nào tạo một query ảo độc lập không bác. Cho em xin đoạn code nhé. Em toàn phải tạo query thật để chạy thôi, trong MDB nhiều query quá.
-
11-20-2009, 09:48 PM #9
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Chưa hiểu ý bạn về query ảo, query độc lập.
Các query là các query, nó là 1 cách nhìn khác về các table thực trên dĩa.
Một số phần mềm khác gọi nó là các View để phân biệt với các lệnh làm thay đổi table (như update, creat, delete ...).
-
11-20-2009, 11:30 PM #10
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Gửi bởi haquocquan
Một query thôi:
SELECT mskh, hoten, ngaymua, SUM(sotien) AS tongso
FROM tblTHEODOI
WHERE mskh+Format("yyyymmdd",ngaymua)
IN (SELECT mskh+ngay FROM (SELECT mskh, MAX(Format("yyyymmdd", (ngaymua)) FROM tblTHEODOI) GROUP BY mskh)
GROUP BY mskh, hoten, ngaymua
Hội y khoa giới tính thế giới định nghĩa xuất tinh sớm là tình trạng rối loạn xuất tinh của nam giới với đặc trưng luôn xuất tinh sớm hơn hoặc trong vòng một phút quan hệ. Bệnh nhân không có khả năng...
Tìm hiểu về loại thuốc dứt điểm bệnh "ra nhanh"