Konwencje obowiązujące przy łączeniu warunków wyszukiwania w okienku kryteriów
Można tworzyć kwerendy, które zawierają dowolną liczbę warunków wyszukiwania, powiązane z dowolną liczbą i oraz lub podmiotów gospodarczych.Kwerendy z kombinacji i oraz lub klauzul może stać się złożona, więc zrozumieć jak takiej kwerendy jest interpretowana podczas jego wykonywania oraz jak takiej kwerendy jest reprezentowana w Okienku kryteriów i okienko SQL.
[!UWAGA]
Szczegółowe informacje na temat warunków wyszukiwania, które zawierają tylko jeden i lub operatora OR, zobacz Jak: Określanie wielu warunków wyszukiwania dla jednej kolumny i Jak: Określanie wielu warunków wyszukiwania dla wielu kolumn.
Poniżej można znaleźć informacje dotyczące:
Priorytet i oraz lub kwerend zawierających obydwa.
W jaki sposób warunki w i i/lub klauzul, które dotyczą logicznie ze sobą.
Jak reprezentuje kwerendy i projektanta widoku w okienku kryteriów kwerendy, zawierające zarówno i oraz lub.
Aby ułatwić zrozumienie poniższego omówienia, wyobraźmy sobie, że pracujesz z employee tabelę zawierającą kolumny hire_date, job_lvl, i status.Przykładach założono, trzeba wiedzieć, informacje takie jak długo pracownik pracował w firmie (to znaczy, co data zatrudnienia pracownika jest), typ zadania, które pracownik wykonuje (jakie poziom zadania jest) i stan pracownika (na przykład na emeryturze).
Pierwszeństwo i i, lub
Gdy kwerenda jest wykonywana, najpierw sprawdza klauzule połączone operatorem AND, a następnie klauzule połączone operatorem lub.
[!UWAGA]
Operator nie ma pierwszeństwo przed zarówno i oraz lub.
Na przykład aby znaleźć albo pracowników, którzy pracują w firmie ponad pięć lat na niższych stanowiskach lub pracowników na wyższych stanowiskach bez względu na datę ich zatrudnienia, można utworzyć klauzulę WHERE w następujący sposób:
WHERE
hire_date < '01/01/90' AND
job_lvl = 100 OR
job_lvl = 200
Aby zastąpić domyślny priorytet operatora AND nad lub nawiasy wokół szczególnych warunków można umieścić w okienku SQL.Warunki w nawiasach są zawsze sprawdzane jako pierwsze.Na przykład aby znaleźć wszystkich pracowników, którzy pracują w firmie ponad pięć lat na niższych i wyższych, można utworzyć klauzulę WHERE w następujący sposób:
WHERE
hire_date < '01/01/90' AND
(job_lvl = 100 OR job_lvl = 200)
Porada |
---|
Zalecane jest, dla jasności, należy zawsze używać nawiasów w przypadku łączenia i oraz lub klauzul, zamiast polegać na domyślny priorytet. |
Jak i współpracuje z wieloma lub klauzul
Opis jak I I klauzule są powiązane w połączeniu może pomóc w tworzeniu i rozumieniu złożonych kwerend w widoku Projektant i kwerendy.
Jeśli zostanie połączonych wiele warunków, przy użyciu i pierwszy zestaw warunków połączonych z i stosuje się do wszystkich warunków w drugim zestawie.Innymi słowy warunek połączony z innym warunkiem jest rozpowszechniany do wszystkich warunków w drugim zestawie.Na przykład poniższy schematyczny przedstawia warunek AND połączony z zestawem warunków OR:
A AND (B OR C)
Powyższa reprezentacja jest logicznie równoznaczna Poniższy schematyczny, w którym pokazuje, jak warunek AND jest rozpowszechniany do drugiego zestawu warunków:
(A AND B) OR (A AND C)
Ta zasada rozpowszechniania ma wpływ, jak używać kwerendy i projektanta widoku.Na przykład wyobraźmy sobie, że szukasz wszystkich pracowników, którzy pracują w firmie ponad pięć lat na niższych i wyższych.W instrukcji w okienku SQL należy wprowadzić następującą klauzulę WHERE:
WHERE (hire_date < '01/01/90' ) AND
(job_lvl = 100 OR job_lvl = 200)
Klauzula połączona operatorem AND odnosi się do obu klauzul połączonych operatorem lub.Jednoznaczny sposób, aby wyrazić to jest powtórzyć warunek AND dla każdego warunku w klauzuli OR.Poniższa instrukcja jest bardziej wyraźny (i dłuższa) niż poprzednia, ale jest z nią równoznaczna:
WHERE (hire_date < '01/01/90' ) AND
(job_lvl = 100) OR
(hire_date < '01/01/90' ) AND
(job_lvl = 200)
Zasada rozpowszechniania klauzul AND względem klauzul połączonych operatorem OR obowiązuje bez względu na to, jaka liczba poszczególnych warunków są zaangażowane.Wyobraźmy sobie na przykład chcesz znaleźć wyższych lub bliskim pracowników, którzy zostały w firmie ponad pięć lat lub odeszli na emeryturę.Klauzula WHERE może wyglądać następująco:
WHERE
(job_lvl = 200 OR job_lvl = 300) AND
(hire_date < '01/01/90' ) OR (status = 'R')
Po warunki związane z i zostały rozpowszechnione, klauzula WHERE będzie wyglądać następująco:
WHERE
(job_lvl = 200 AND hire_date < '01/01/90' ) OR
(job_lvl = 200 AND status = 'R') OR
(job_lvl = 300 AND hire_date < '01/01/90' ) OR
(job_lvl = 300 AND status = 'R')
W jaki sposób i wiele, i lub klauzul są reprezentowani w okienku kryteriów
Kwerendy i widoku Projektant reprezentuje warunki wyszukiwania w Okienku kryteriów.Jednakże w niektórych przypadkach, w których użyto wiele klauzul połączonych z i i lub przedstawicielstwo w okienku kryteriów może być oczekiwań.Ponadto, jeśli zmodyfikowanie kwerendy w okienku kryteriów lub w okienku Diagram, może się okazać, że instrukcja SQL została zmieniona z zostały wprowadzone.
Ogólnie rzecz biorąc, określany przez następujące zasady jak i oraz lub klauzul, które są wyświetlane w okienku kryteriów:
Wszystkie warunki połączone operatorem AND pojawiają się w filtru kolumny w siatce lub w tym samym lub... kolumny.
Wszystkie warunki związane z lub są wyświetlane w osobnych lub... kolumny.
Jeśli logiczny wynik kombinacji i oraz lub klauzul jest, że AND zostaje rozpowszechniona do kilku klauzul OR, w okienku kryteriów jest reprezentuje jawnie, przez powtórzenie klauzuli AND odpowiednią liczbę razy.
Na przykład w okienku SQL może utworzyć warunek wyszukiwania, takie jak na przykład następujące polecenie, w którym dwie klauzule połączone operatorem i mają priorytet względem trzeciej, połączonej z lub:
WHERE (hire_date < '01/01/90' ) AND
(job_lvl = 100) OR
(status = 'R')
Kwerendy i widoku Projektant klauzula WHERE w okienku kryteriów w następujący sposób:
Jednakże jeśli w klauzulach połączonych operatorem OR mają pierwszeństwo przed klauzuli AND, klauzula AND jest powtarzana dla każdej klauzuli OR.Powoduje to, że klauzula AND rozpowszechniane do każdej klauzuli OR.Na przykład w okienku SQL można utworzyć klauzulę WHERE w następujący sposób:
WHERE (hire_date < '01/01/90' ) AND
( (job_lvl = 100) OR
(status = 'R') )
Kwerendy i widoku Projektant klauzula WHERE w okienku kryteriów w następujący sposób:
Jeśli w klauzulach połączonych operatorem OR uwzględniona jest tylko jedna kolumna danych, kwerendy i projektanta widoku można umieścić całą klauzulę OR w pojedynczej komórce siatki, dzięki czemu nie trzeba powtórzyć klauzula AND.Na przykład w okienku SQL można utworzyć klauzulę WHERE w następujący sposób:
WHERE (hire_date < '01/01/90' ) AND
((status = 'R') OR (status = 'A'))
Kwerendy i widoku Projektant klauzula WHERE w okienku kryteriów w następujący sposób:
Jeśli zmiany do kwerendy (takie jak zmiana jednej z wartooci w okienku kryteriów) kwerendy i widoku Projektant ponownie utworzy instrukcję SQL w okienku SQL.Ponownie utworzona instrukcja SQL będzie przypominał wyświetlaną w okienku kryteriów, a nie oryginalną instrukcję.Na przykład jeśli w okienku kryteria zawarte są rozpowszechnione klauzule AND, wynikowa instrukcja w okienku SQL zostaną odtworzone z rozdzielonymi klauzulami.Aby uzyskać szczegółowe informacje Zobacz "Jak I programu Works z wieloma lub klauzul" wcześniej w tym temacie.