Konvence pro kombinování podmínek vyhledávání v okně kritérií
Můžete vytvořit dotazy mohou obsahovat libovolný počet podmínek vyhledávání spojené s libovolným počtem a a nebo operátorů.Dotaz s kombinací a a nebo doložek může být složitá, proto je vhodné se seznámit jak takový dotaz interpretována ho provést a jak takový dotaz reprezentována Kritérií a v podokně SQL.
[!POZNÁMKA]
Podrobnosti o podmínky vyhledávání, které obsahují pouze jednu a nebo operátoru OR, viz Jak: zadání více podmínek vyhledávání pro jeden sloupec a Jak: zadání více podmínek vyhledávání pro více sloupců.
Níže naleznete informace o:
Priority a a nebo dotazy, které obsahují obě.
Jak podmínky v a nebo doložky, které se týkají logicky vzájemně.
Jak představuje dotaz a Návrhář zobrazení kritérií dotazů, které obsahují obě a a nebo.
Chcete-li porozumět následující diskusi, Představte si, že pracujete employee tabulku obsahující sloupce hire_date, job_lvl, a status.V příkladech se předpokládá, že potřebujete znát informace o těchto jak dlouho zaměstnanec pracoval ve společnosti (co datum nástupu zaměstnance je), jakou práci zaměstnance provádí (co úroveň práce je) a stav zaměstnance (například důchodce).
Priorita a a nebo
Při spuštění dotazu vyhodnotí nejprve klauzulí spojených s A, a pak jsou propojeny nebo.
[!POZNÁMKA]
Operátor NOT přednost i a a nebo.
Například chcete-li nalézt zaměstnance, kteří ve společnosti pro více než pět let na nižších úrovních nebo zaměstnanci s úlohami na střední úrovni bez ohledu na datum jejich přijetí, můžete vytvořit například následující klauzuli WHERE:
WHERE
hire_date < '01/01/90' AND
job_lvl = 100 OR
job_lvl = 200
Přepsat výchozí přednost z a přes nebo je do závorek zvláštní podmínky v podokně SQL.Podmínky v závorkách jsou vždy vyhodnoceno jako první.Například chcete-li najít všechny zaměstnance, kteří u společnosti více než pět let na nižších nebo středních pozicích, můžete vytvořit například následující klauzuli WHERE:
WHERE
hire_date < '01/01/90' AND
(job_lvl = 100 OR job_lvl = 200)
Tip
Je vhodné, jasnosti, je vždy zahrnout závorky při kombinování a a nebo klauzule namísto výchozí přednost.
Jak a spolupracuje s více nebo doložky
Princip jak a a nebo souvisejících kombinaci klauzulí můžete vytvářet a chápat složité dotazy v dotazu a Návrhář zobrazení.
Pokud propojení více podmínek použití a první sada podmínek operátorem AND platit pro všechny podmínky v druhé sadě.Jinými slovy podmínka spojená s jinou podmínku a je distribuován pro všechny podmínky v druhé sadě.Například následující Schématické vyobrazení ukazuje podmínku AND se sadou podmínek OR:
A AND (B OR C)
Výše uvedené je logicky ekvivalentní následující schématické znázornění, které ukazuje, jak je podmínka a distribuován v druhé sadě podmínek:
(A AND B) OR (A AND C)
Tento princip přeznačení ovlivňuje, jak použít dotaz a Návrhář zobrazení.Představte si například, že hledáte všechny zaměstnance, kteří ve společnosti na nižších nebo středních pozicích více než pět let.Do příkazu v podokně SQL zadáte následující klauzuli WHERE:
WHERE (hire_date < '01/01/90' ) AND
(job_lvl = 100 OR job_lvl = 200)
Klauzule spojené s a platí pro obě klauzule spojené operátorem nebo.Je lze explicitně vyjádřit zopakováním podmínky jednou pro každou podmínku klauzule OR.Následující příkaz je názornější (a delší) než předcházející příkaz, ale je logicky ekvivalentní:
WHERE (hire_date < '01/01/90' ) AND
(job_lvl = 100) OR
(hire_date < '01/01/90' ) AND
(job_lvl = 200)
Princip platnosti klauzule AND pro všechny připojené klauzule OR platí bez ohledu na to, kolik jednotlivé podmínky jsou zapojeny.Představte si například, že chcete najít zaměstnance vyšší nebo střední úrovni, kteří ve společnosti byla více než pět let nebo jsou v důchodu.Klauzule WHERE může vypadat například takto:
WHERE
(job_lvl = 200 OR job_lvl = 300) AND
(hire_date < '01/01/90' ) OR (status = 'R')
Podmínky spojené s a byly, klauzule WHERE vypadala takto:
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')
Jak více a a nebo doložky jsou zastoupeni v okně kritérií
Dotaz a Návrhář zobrazení představuje podmínky vyhledávání v Kritérií.V některých případech zahrnujících více klauzulí spojených s však a a nebo zastoupení v okně kritérií nemusí být očekávání.Kromě toho, pokud se úprava dotazu v okně kritérií nebo podokna Diagram, může najít příkaz SQL se změnil z jste zadali.
Obecně tato pravidla určují způsob a a nebo doložky se zobrazí v podokně kritéria:
Všechny podmínky spojené s a v Filtr sloupce v mřížce nebo ve stejném nebo... sloupce.
Všechny podmínky spojené s nebo se zobrazí v samostatném nebo... sloupce.
Pokud logický výsledek kombinace a a nebo klauzule je, že a je distribuován do několika klauzule OR, okno kritérií představuje to výslovně opakováním klauzule a podle potřeby i několikrát.
Například v podokně SQL pravděpodobně vytvoříte podmínku vyhledávání, jako je například následující příkaz, ve kterém dvě klauzule spojené s a přednost jedné propojené s třetí nebo:
WHERE (hire_date < '01/01/90' ) AND
(job_lvl = 100) OR
(status = 'R')
Dotaz a Návrhář zobrazení představuje tuto klauzuli WHERE v okně kritérií takto:
Však pokud se v klauzulích spojených operátorem OR mají přednost před klauzulí AND, klauzule AND opakovat u každé z klauzulí.To způsobí, že klauzule AND distribuovány každé z klauzulí.V podokně SQL můžete například vytvořit následující klauzuli WHERE:
WHERE (hire_date < '01/01/90' ) AND
( (job_lvl = 100) OR
(status = 'R') )
Dotaz a Návrhář zobrazení představuje tuto klauzuli WHERE v okně kritérií takto:
Pokud Návrhář zobrazení můžete umístit celou klauzuli OR do jediné buňky mřížky, takže není nutné opakovat klauzule AND připojené klauzule OR zahrnuje pouze jeden sloupec dat dotazu.V podokně SQL můžete například vytvořit následující klauzuli WHERE:
WHERE (hire_date < '01/01/90' ) AND
((status = 'R') OR (status = 'A'))
Dotaz a Návrhář zobrazení představuje tuto klauzuli WHERE v okně kritérií takto:
Pokud provedete změnu dotaz (například změnou některé z hodnot v podokně kritéria), dotaz a Návrhář zobrazení znovu vytvoří příkaz SQL v podokně SQL.Znovu vytvořený příkaz SQL bude podobat zobrazení kritérií než původní příkaz.Například pokud kritéria podokno obsahuje distribuované klauzule, bude výsledný příkazu v podokně SQL znovu s explicitní distribuované klauzule.Podrobnosti naleznete v tomto tématu "Jak funguje s více nebo doložky A".