Giả sử tôi có bảng có tên tbl_med, có sáu trường: [nom_lab], [nom_desc], [nom_apres], [date_vig], [cod_med], [vr_pmc ].Tôi muốn hiểu truy vấn do Microsoft Access tạo theo hướng dẫn
Tôi muốn một truy vấn SQL MS Access rằng sẽ:
- Tìm hồ sơ trùng lặp liên quan đến bốn lĩnh vực: [nom_lab], [nom_desc], [nom_apres], [date_vig].
- Hiển thị tất cả sáu trường (không chỉ các trường đang được sử dụng để kiểm tra trùng lặp).
tôi đã sử dụng MS Access "Find Duplicates Query Wizard", mà đã cho tôi SQL sau:
SELECT tbl_med.[nom_lab], tbl_med.[nom_desc], tbl_med.[nom_apres], tbl_med.[date_vig], tbl_med.[cod_med], tbl_med.[vr_pmc]
FROM tbl_med
WHERE tbl_med.[nom_lab]
IN
(
SELECT [nom_lab]
FROM [tbl_med] As Tmp
GROUP BY [nom_lab], [nom_desc], [nom_apres],[date_vig]
HAVING Count(*)>1
And [nom_desc] = [tbl_med].[nom_desc]
And [nom_apres] = [tbl_med].[nom_apres]
And [date_vig] = [tbl_med].[date_vig]
)
ORDER BY tbl_med.[nom_lab], tbl_med.[nom_desc], tbl_med.[nom_apres], tbl_med.[date_vig];
bất cứ ai có thể giải thích lý do tại sao ba Các điều kiện And
giữa các đường quy tắc ngang ở trên có cần thiết không?
Có ai có truy vấn trực quan hơn dễ hiểu hơn không?
Chúng cần thiết vì truy vấn phải tham chiếu về phiên bản tổng của chính nó để xác định xem số lượng bản ghi có lớn hơn 1 hay không, do đó trùng lặp. Tôi khuyên bạn nên gắn bó với trình hướng dẫn cho các hàng đợi thuộc loại này. –