Query Union trong MS Access

Trong Microsoft Access, UNION là một tính năng mạnh để kết hợp dữ liệu từ nhiều truy vấn hoặc bảng có cấu trúc giống nhau.

  1. Kết hợp dữ liệu từ nhiều bảng cùng định dạng
  2. Kết hợp dữ liệu từ các nguồn khác nhau có cùng loại thông tin
  3. Truy vấn nhiều điều kiện logic rẽ nhánh không dùng được trong 1 câu SQL
  4. Ứng dụng để tạo báo cáo tổng hợp từ nhiều nguồn
  5. Lưu ý khi dùng UNION trong Access

Dưới đây là các ứng dụng thực tế của UNION trong phần mềm hoặc nghiệp vụ, cùng với ví dụ minh họa rõ ràng

1. Kết hợp dữ liệu từ nhiều bảng cùng định dạng

🧾 Tình huống:

Một công ty có nhiều bảng như:

    NhanVienChinhThuc(MaNV, HoTen, NgayVaoLam)
    NhanVienThoiVu(MaNV, HoTen, NgayVaoLam)

🎯 Mục tiêu:

Tạo một danh sách tất cả nhân viên (cả chính thức và thời vụ).

📌 Câu lệnh:

SELECT MaNV, HoTen, NgayVaoLam FROM NhanVienChinhThuc
UNION
SELECT MaNV, HoTen, NgayVaoLam FROM NhanVienThoiVu;

    🔎 Ghi nhớ: UNION tự động loại bỏ dòng trùng. Dùng UNION ALL nếu muốn giữ lại bản ghi trùng.

2. Kết hợp dữ liệu từ các nguồn khác nhau có cùng loại thông tin

🧾 Tình huống:

Một trường học lưu điểm 2 kỳ ở 2 bảng:

    DiemHocKy1(MaHS, MonHoc, Diem)
    DiemHocKy2(MaHS, MonHoc, Diem)

🎯 Mục tiêu:

Tạo truy vấn gộp tất cả điểm học sinh của cả hai học kỳ để thống kê trung bình.

📌 Câu lệnh:

SELECT MaHS, MonHoc, Diem FROM DiemHocKy1
UNION ALL
SELECT MaHS, MonHoc, Diem FROM DiemHocKy2;

3. Truy vấn nhiều điều kiện logic rẽ nhánh không dùng được trong 1 câu SQL

🧾 Tình huống:

Bạn muốn tạo một truy vấn hiển thị:
    Danh sách nhân viên kỹ thuật có hệ số lương > 2.5
    Và nhân viên kế toán có hệ số lương < 2.0

Tuy khó viết chung trong 1 điều kiện WHERE, bạn có thể dùng UNION:

📌 Câu lệnh:

SELECT MaNV, HoTen, PhongBan, HSL
FROM NhanVien
WHERE PhongBan = "Kỹ thuật" AND HSL > 2.5
UNION
SELECT MaNV, HoTen, PhongBan, HSL
FROM NhanVien
WHERE PhongBan = "Kế toán" AND HSL < 2.0;

4. Ứng dụng để tạo báo cáo tổng hợp từ nhiều nguồn

🧾 Tình huống:

Trong phần mềm bán hàng có 2 bảng:
    HoaDonBan(MaHD, Ngay, SoTien)
    HoaDonTraLai(MaHD, Ngay, SoTien)

🎯 Mục tiêu:

Tạo báo cáo thống kê tổng thu – chi trong ngày, dùng 1 query duy nhất.

📌 Câu lệnh:

SELECT Ngay, SoTien, "Bán hàng" AS LoaiGiaoDich FROM HoaDonBan
UNION ALL
SELECT Ngay, -SoTien, "Trả lại" AS LoaiGiaoDich FROM HoaDonTraLai;

    ✅ Khi đó, có thể tính tổng giao dịch trong ngày bằng SUM(SoTien) sau khi GROUP BY Ngay.

5. Lưu ý khi dùng UNION trong Access

    Cột phải cùng số lượng và kiểu dữ liệu tương thích.
    Không dùng được giao diện thiết kế — bạn phải viết SQL trực tiếp.
    Nếu cần giữ bản ghi trùng → dùng UNION ALL.

Tìm kiếm:

Bài viết liên quan:

Trong Microsoft Access, UNION là một tính năng mạnh để kết hợp dữ liệu từ nhiều truy vấn hoặc bảng có cấu trúc giống nhau.