Załóżmy, że mam tabelę o nazwie tbl_med, która ma sześć pól: [nom_lab], [nom_desc], [nom_apres], [date_vig], [cod_med], [vr_pmc ].Chciałbym zrozumieć zapytanie generowane przez Kreatora Microsoft Access:
Chcę kwerendy MS Access SQL, który będzie:
- Znajdź zduplikowane rekordy w stosunku do czterech dziedzin: [nom_lab], [nom_desc], [nom_apres], [date_vig].
- Pokaż wszystkie sześć pól (nie tylko te używane do sprawdzania duplikatów).
Użyłem MS Access "Znajdź Kreatora kwerend duplikatów", który dał mi następujący SQL:
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];
Czy ktoś może wyjaśnić, dlaczego trzy And
warunki między poziomymi liniami reguł powyżej są konieczne?
Czy ktoś ma bardziej intuicyjne zapytanie, które byłoby łatwiejsze do zrozumienia?
Są one konieczne, ponieważ zapytanie musi odnosić się do wersji sumarycznej w celu ustalenia, czy liczba każdego rekordu jest większa niż 1, a zatem jest duplikatem. Polecam trzymać się z kreatorem dla tego typu kolejek. –