Zpřesnění výsledků dotazu úpravou příkazů SQL

Platí pro
Access pro Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Pokud vaše dotazy nepracují dost tvrdě, můžete přidat pár základních příkazů SQL, které vám pomůžou zaměřit se na výsledky. Podívejme se na několik typů příkazů SQL a klauzule nebo části, které můžete upravovat, abyste získali požadované výsledky.

V tomto článku

Vytvoření příkazu Select

Příkaz SQL select má dvě až tři klauzule. Klauzule SELECT říká databázi, kde má data hledat, a žádá ji, aby vrátila konkrétní výsledek.

Poznámka

Příkazy SELECT vždy končí středníkem (;) buď na konci poslední klauzule, nebo na samostatném řádku na konci příkazu SQL.

Následující příkaz příkazu SELECT žádá Access, aby získal informace ze sloupců E-mailová adresa a Společnost z tabulky Kontakty, konkrétně odkud ve sloupci Město najde "Praha".

Karta objektu SQL zobrazující příkaz SELECT

Výše uvedený dotaz má tři klauzule: SELECT, FROM a WHERE.

1. Klauzule SELECT obsahuje seznam sloupců obsahujících data, která chcete použít. Obsahuje operátor (SELECT), za kterým následují dva identifikátory (E-mailová adresa a Společnost). Pokud identifikátor obsahuje mezery nebo speciální znaky (například "E-mailová adresa"), uzavřete identifikátor do hranatých závorek.

2. Klauzule FROM identifikuje zdrojovou tabulku. V tomto příkladu obsahuje operátor (FROM) následovaný identifikátorem (Contacts).

3. Klauzule WHERE je nepovinná. Příklad má operátor (WHERE), za kterým následuje výraz (City="Seattle").

Další informace o výběrových dotazech najdete v článku Vytvoření jednoduchého výběrového dotazu.

Tady je seznam běžných klauzulí SQL:

Klauzule SQL Funkce Povinné?
SELECT Obsahuje pole obsahující potřebná data. Ano
FROM Obsahuje tabulky obsahující pole uvedená v klauzuli SELECT. Ano
WHERE Určuje kritéria pole, která musí každý záznam splňovat, aby byl zahrnutý do výsledků. Ne
SEŘADIT PODLE Určuje, jak se mají výsledky seřadit. Ne
GROUP BY V příkazu SQL, který obsahuje agregační funkce, obsahuje seznam polí, jejichž souhrn není zahrnut v klauzuli SELECT. Pouze pokud taková pole existují
HAVING V příkazu SQL, který obsahuje agregační funkce, určuje podmínky, které platí pro pole, která jsou shrnuta v příkazu SELECT. Ne

Každou klauzuli SQL tvoří termíny. Tady je seznam některých běžných termínů SQL.

Termín SQL Definice Příklad
Identifikátor Název, který slouží k identifikaci databázového objektu, například název sloupce. [e-mailová adresa] a společnost
Operátor Klíčové slovo, které představuje akci nebo upravuje akci. AS
Konstanta Hodnota, která se nemění, například číslo nebo NULL. 42
Výraz Kombinace identifikátorů, operátorů, konstant a funkcí, jejímž výsledkem je jediná hodnota. >= Produkty. [Jednotková cena]

Začátek stránky

Přizpůsobení klauzule SELECT

Přizpůsobení Příklad
Pokud chcete zobrazit jenom rozdílné hodnoty.
Použijte klíčové slovo DISTINCT v klauzuli SELECT.
Pokud jsou třeba vaši zákazníci z několika různých poboček a někteří mají stejné telefonní číslo a vy chcete telefonní číslo zobrazit jenom jednou, bude klauzule SELECT vypadat takto:SELECT DISTINCT [txtCustomerPhone]
Změna způsobu zobrazení identifikátoru v zobrazení Datový list pro zlepšení čitelnosti
Použijte operátor AS (klíčové slovo, které představuje akci nebo mění akci) se aliasem pole v klauzuli SELECT. Alias pole je název, který přiřadíte poli, aby byly výsledky srozumitelnější.
SELECT [txtCustPhone] AS [Telefon zákazníka]

Přizpůsobení klauzule FROM

Přizpůsobení Příklad
Můžete použít alias tabulky nebo jiný název, který přiřadíte tabulce v příkazu select. Alias tabulky je užitečný, pokud je název tabulky dlouhý, zejména v případě, že máte více polí se stejným názvem v různých tabulkách. Výběr dat ze dvou polí se stejným názvem (například ID), přičemž první pole pochází z tabulky tblCustomer a druhé z tabulky tblOrder:
SELECT [tblCustomer]. [ID],
[tblOrder]. [ID]
K definování aliasů tabulek v klauzuli FROM použijte operátor AS:
FROM [tblCustomer] AS [C],
[tblOrder] AS [O]
Tyto aliasy tabulky pak můžete použít v klauzuli SELECT následujícím způsobem:SELECT [C]. [ID],
[O]. [ID]
Pomocí spojení můžete kombinovat dvojice záznamů ze dvou zdrojů dat do jednoho výsledku, nebo určit, jestli se mají zahrnout záznamy z jedné nebo druhé tabulky, pokud v související tabulce neexistuje odpovídající záznam.
Spojit tabulky tak, aby dotaz zkombinoval položky z tabulek a vyloučil položky, u kterých v druhé tabulce neexistuje odpovídající záznam
Klauzule FROM může vypadat takto:FROM [tblCustomer]
INNER JOIN [tblOrder]
ON [tblCustomer]. [CustomerID]=[tblOrder]. [IDZákazníka]

Používání spojení

Existují dva typy spojení, vnitřní a vnější. Vnitřní spojení jsou v dotazech běžnější. Když spustíte dotaz s vnitřním spojením, zobrazí se ve výsledku jenom ty položky, pro které v obou spojených tabulkách existují společné hodnoty.

Vnější spojení určují, zda se mají zahrnout data v případě, že neexistuje společná hodnota. Vnější spojení jsou směrová, což znamená, že můžete zadat, zda se mají zahrnout všechny záznamy z první tabulky zadané ve spojení (toto se nazývá levé spojení), nebo zda se mají zahrnout všechny záznamy z druhé tabulky ve spojení (toto se nazývá pravé spojení). Vnější spojení má následující syntaxi SQL:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2

Další informace o použití spojení v dotazu najdete v tématu Spojení tabulek a dotazů.

Začátek stránky

Přizpůsobení klauzule WHERE

Klauzule WHERE obsahuje kritéria, která pomáhají omezit počet položek vrácených v dotazu. Podívejte se na příklady kritérií dotazů a toho, jak fungují.

Příkladem přizpůsobení základní klauzule WHERE je omezení výsledků dotazu. Předpokládejme, že chcete vyhledat telefonní číslo zákazníka a pamatujete si jenom jeho příjmení jako Novák. V tomto příkladu jsou příjmení uložená v poli Příjmení, takže syntaxe SQL bude vypadat takto:

WHERE [LastName]='Bagel'

Klauzuli WHERE můžete použít také ke kombinování zdrojů dat pro sloupce, které mají shodná data, ale různé datové typy. To je užitečné, protože spojení nejde vytvořit mezi poli, která mají různé datové typy. Jedno pole použijte jako kritérium pro druhé pole pomocí klíčového slova LIKE . Pokud chcete například použít data z tabulky Aktiva a tabulky Zaměstnanci pouze v případě, že typ aktiva v poli Typ aktiva v tabulce Aktiva má v tabulce Zaměstnanci číslo 3 v poli Množství, bude klauzule WHERE vypadat takto:

WHERE field1 LIKE field2

Důležité

Pro pole použité s agregační funkcí v klauzuli WHERE nelze zadat kritéria. Místo toho musíte k zadání kritérií agregovaných polí použít klauzuli HAVING.

Začátek stránky

Přizpůsobení pomocí operátoru UNION

Operátor UNION použijte, pokud chcete zobrazit kombinované zobrazení výsledků z několika podobných výběrových dotazů. Vaše databáze například obsahuje tabulky Produkty a Služby a obě mají tři pole: Exkluzivní nabídka nebo Produkt nebo Služba, Cena, Záruka nebo Garance. I když tabulka Produkty obsahuje informace o záruce a tabulka Služby informace o záruce, základní informace zůstávají stejné. Pomocí sjednocovacího dotazu můžete sloučit tři pole z obou tabulek takto:

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer 
FROM Services;

Po spuštění dotazu se data z jednotlivých sad odpovídajících polí zkombinují do jednoho výstupního pole. Chcete-li do výsledků zahrnout případné duplicitní řádky, použijte operátor ALL.

Poznámka

Příkaz Select musí mít stejný počet výstupních polí, ve stejném pořadí a se stejnými nebo kompatibilními datovými typy. Pro účely sjednocovacího dotazu jsou kompatibilní datové typy Číslo a Text.

Další informace o sjednocovacích dotazech najdete v tématu Použití sjednocovacího dotazu k zobrazení jednotného výsledku z několika dotazů.

Začátek stránky