Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    Sử dụng SubQuery để so sánh dữ liệu giữa 2 table

    Chào các Bạn,
    Trong thực tế ứng dụng Access vào Kế toán chúng ta thường có nhu cầu so sánh dữ liệu giữa 2 bảng với nhau, thí dụ như trường hợp cần kiểm tra xem có dữ liệu nào có trong table này nhưng không có trong table kia, ...

    Sau đây tôi xin giới thiệu 1 trường hợp làm ví dụ:
    Giả định ta có 2 bảng danh mục hàng hoá: DmHanghoa và DmHanghoa_ithon
    Nhu cầu là: tìm ra những mặt hàng nào có trong DmHanghoa nhưng không có trong DmHanghoa_ithon.
    Cách thức xử lý như sau:
    Tạo 1 Query với câu lệnh SQL như sau:

    SELECT DmHanghoa.MSHH
    FROM DmHanghoa
    WHERE (((Exists (SELECT * FROM DmHanghoa_ithon WHERE (DmHanghoa.MSHH = DmHanghoa_ithon.MSHH)))=False));

    Các bạn chú ý sẽ thấy:
    1. Có 1 câu lệnh SELECT lồng bên trong. Cái này gọi là SubQuery (từ Sub trong SubQuery là tiền tố chỉ 1 Query thứ cấp bên trong 1 Query khác, giống như SubForm trong 1 Form)

    2. Từ khoá Exists được sử dụng trong trường hợp này như 1 toán tử để kiểm tra sự hiện diện của những mẫu tin thoả điều kiện đặt ra.

    Các Bạn thử sử dụng với các toán tử sau xem sao nhé: IN, ANY, ALL

    Sau đây là link tải các tài liệu có liên quan:
    1. File mdb chứa ví dụ trên và tài liệu giải thích bằng tiếng Anh (tôi trích nguyên văn từ tài liệu gốc): http://www.mediafire.com/download.php?nzdctmzwzuo

    2. Tài liệu tiếng Anh về sử dụng ngôn ngữ SQL trong MS. Access: http://www.mediafire.com/download.php?newjeymnmuz

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Sử dụng SubQuery để so sánh dữ liệu giữa 2 table




    Trích dẫn Gửi bởi lehongduc
    Chào các Bạn,
    Trong thực tế ứng dụng Access vào Kế toán chúng ta thường có nhu cầu so sánh dữ liệu giữa 2 bảng với nhau, thí dụ như trường hợp cần kiểm tra xem có dữ liệu nào có trong table này nhưng không có trong table kia, ...

    Sau đây tôi xin giới thiệu 1 trường hợp làm ví dụ:
    Giả định ta có 2 bảng danh mục hàng hoá: DmHanghoa và DmHanghoa_ithon
    Nhu cầu là: tìm ra những mặt hàng nào có trong DmHanghoa nhưng không có trong DmHanghoa_ithon.
    Cách thức xử lý như sau:
    Tạo 1 Query với câu lệnh SQL như sau:

    SELECT DmHanghoa.MSHH
    FROM DmHanghoa
    WHERE (((Exists (SELECT * FROM DmHanghoa_ithon WHERE (DmHanghoa.MSHH = DmHanghoa_ithon.MSHH)))=False));

    Các bạn chú ý sẽ thấy:
    1. Có 1 câu lệnh SELECT lồng bên trong. Cái này gọi là SubQuery (từ Sub trong SubQuery là tiền tố chỉ 1 Query thứ cấp bên trong 1 Query khác, giống như SubForm trong 1 Form)

    2. Từ khoá Exists được sử dụng trong trường hợp này như 1 toán tử để kiểm tra sự hiện diện của những mẫu tin thoả điều kiện đặt ra.

    Các Bạn thử sử dụng với các toán tử sau xem sao nhé: IN, ANY, ALL

    Sau đây là link tải các tài liệu có liên quan:
    1. File mdb chứa ví dụ trên và tài liệu giải thích bằng tiếng Anh (tôi trích nguyên văn từ tài liệu gốc): http://www.mediafire.com/download.php?nzdctmzwzuo

    2. Tài liệu tiếng Anh về sử dụng ngôn ngữ SQL trong MS. Access: http://www.mediafire.com/download.php?newjeymnmuz
    Một cách khác cũng dùng sub query cho kết quả tương tự:

    SELECT DmHanghoa.MSHH
    FROM DmHanghoa
    WHERE mshh NOT IN (SELECT mahh FROM dmHanghoa_ithon);

    Câu này có ý nghĩa là hãy lọc ra những record của dmhanghoa mà ở đó mshh chưa tồn tại (chưa có) trong dmHanghoa_ithon.

  3. #3
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Sử dụng SubQuery để so sánh dữ liệu giữa 2 table

    Giả sử em đang có dữ liệu như sau:
    MH | Tang loai
    001 100 A
    001 200 A
    001 100 B
    001 100 A
    Các bác có thể dùng query để cho ra kết quả giống thế này không
    MH | Tang loai |Hientai
    001 100 A 100
    001 200 A 300
    001 100 B 100
    001 100 A 400
    Hiện tại để xử lý dạng thế này em đang phải dùng Dsum nhưng khi muốn chuyển sang SQL thì hình như các hàm có D... không áp dụng được

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •