A lekérdezés további finomítása az SQL-utasítások szerkesztésével
Hatókör
Microsoft 365-höz készült Access Access 2024 Access 2021 Access 2019 Access 2016

Ha a lekérdezések nem működnek elég keményen, néhány alapvető SQL utasítás hozzáadása segíthet az eredmények összpontosításában. Vizsgáljuk meg az SQL-utasítások néhány típusát, valamint azokat a záradékokat vagy részeket, amelyeket a kívánt eredmények eléréséhez szerkeszthet.

Tartalom

Select utasítás létrehozása

Minden SQL-utasításhoz két vagy három záradék tartozik. A SELECT záradék tájékoztatja az adatbázist az adatok keresésének helyéről, és megkéri, hogy adjon vissza egy adott eredményt.

Megjegyzés:  A SELECT utasításokat mindig pontosvessző (;) zárja le, amely vagy az utolsó záradék végén, vagy az SQL-utasítás utolsó sorát követő külön sorban állhat.

Az alábbi select utasítás arra kéri az Accesst, hogy kérjen le információkat az E-mail cím és a Cég oszlopból a Névjegyek táblából, különösen ott, ahol a Város oszlopban megtalálja a "Budapest" szót.

SQL-objektumlap SELECT utasítással

A fenti lekérdezésnek három záradéka van: SELECT, FROM és WHERE.

1. A SELECT záradék felsorolja azokat az oszlopokat, amelyekben a használni kívánt adat, valamint egy operátor (SELECT) és két ezt követő azonosító található. Ha egy azonosítóban szóközök vagy más speciális karakterek szerepelnek (például az E-mail Address azonosítóban), az azonosítót szögletes zárójelbe kell tenni.

2. A FROM záradék a forrástáblát azonosítja. Ebben a példában egy operátort (FROM) tartalmaz, amelyet egy azonosító (Contacts) követ.

3. A WHERE záradék megadása nem kötelező. A példában egy operátort (WHERE) tartalmaz, amelyet egy kifejezés (City="Seattle") követ.

A lekérdezések kiválasztásával kapcsolatos további információkért lásd: Egyszerű választó lekérdezés létrehozása.

A leggyakoribb SQL-záradékok listája az alábbi:

SQL-záradék neve

Rendeltetés

Kötelező ?

SELECT

A vizsgált adatokat tartalmazó mezőket sorolja fel.

Igen

FROM

A SELECT záradékban felsorolt mezőket tartalmazó táblákat sorolja fel.

Igen

WHERE

Meghatározza azokat a mezőfeltételeket, amelyek alapján az egyes rekordok bekerülnek az eredmények közé.

Nem

ORDER BY

Megadja az eredmények rendezésének módját.

Nem

GROUP BY

Az összegző függvényeket tartalmazó SQL-utasításokban felsorolja azokat a mezőket, amelyek a SELECT záradékban nem szerepeltek.

Csak ha létezik ilyen mező

HAVING

Összegző függvényeket tartalmazó SQL-utasításokban megadja a SELECT utasításban összegzett mezőkre vonatkozó feltételeket.

Nem

Minden SQL-záradék kifejezésekből áll. Az alábbi lista bemutat néhány gyakori SQL-kifejezést.

SQL-kifejezés

Definíció

Példa

azonosító

Egy adatbázis-objektum, például oszlop azonosítására szolgáló név.

[E-mail cím] és Vállalat

operátor

Műveletet jelző vagy azt módosító kulcsszó.

AS

állandó (konstans)

Nem változó érték, például egy szám, vagy a NULL.

42

kifejezés

Azonosítók, operátorok, állandók és függvények kombinációja, amellyel értéket ad egy számnak.

>= Termékek.[Egységár]

Vissza a lap tetejére

A SELECT záradék testreszabása

Testreszabás

Példa

Csak a különböző értékek megjelenítése.

Használja a DISTINCT kulcsszót a SELECT záradékban.

Ha például vevői különböző fiókirodákból származnak, és közülük többnek megegyezik a telefonszáma, de Ön mindegyik telefonszámot csak egyszer szeretné megjeleníteni, a következőhöz hasonló SELECT záradékot alkalmazhat:

SELECT DISTINCT [txtCustomerPhone] 

Az azonosító megjelenésének módosítása, hogy könnyebben lehessen olvasni az Adatlap nézetben.

A SELECT záradékban használja az AS operátort (műveletet megjelenítő vagy módosító kulcsszó) mezőaliasszal. A mezőalias egy név, amelyet az eredmények olvashatóbbá tétele érdekében rendel hozzá a mezőhöz.

SELECT [txtCustPhone] AS [Customer Phone]

A FROM záradék testreszabása

A testreszabás célja

Példa

Táblaalias, azaz másik név hozzárendelése a táblákhoz a SELECT utasításban. A táblaaliasokat akkor érdemes alkalmazni, ha a táblák nevei hosszúak, de még inkább akkor, ha a különböző táblákban egyező nevű mezők vannak.

Ha két mezőből szeretné összegyűjteni az adatokat, és mindkét mező neve ID, de az egyik a tblCustomer nevű táblából, a másik a tblOrder nevű táblából származik:

SELECT [tblCustomer].[ID],  [tblOrder].[ID]

Az AS operátorral táblaaliasokat határozhat meg a FROM záradékban:

FROM [tblCustomer] AS [C],  [tblOrder] AS [O] 

Ezeket a táblaaliasokat ezután felhasználhatja a SELECT záradékban az alábbiak szerint:

SELECT [C].[ID],  [O].[ID]

Az illesztésekkel két adatforrásból származó rekordpárokat egyesíthet egyetlen eredményben, vagy megadhatja, hogy bármelyik táblából vegyen-e fel rekordokat, ha a kapcsolódó táblában nincs megfelelő rekord.

A táblák összekapcsolása úgy, hogy a lekérdezés kombinálja a táblák elemeit, és kizárja az elemeket, ha a másik táblában nincs megfelelő rekord

A FROM záradék a következőképpen nézhet ki:

FROM [tblCustomer] INNER JOIN [tblOrder]ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID] 

Az illesztésekkel kapcsolatos tudnivalók

Az illesztéseknek két típusa létezik: belső és külső illesztés. A lekérdezésekben a belső illesztés gyakoribb. Ha belső illesztéssel futtat egy lekérdezést, az eredmény csak azokat az elemeket jeleníti meg, amelyekben közös érték található mindkét illesztett táblában.

A külső illesztések azt határozzák meg, hogy a lekérdezés figyelembe vegye-e az adatokat, ha nincsenek azonos értékek. A külső illesztések irányítottak, tehát megadható, hogy a lekérdezés az illesztésben megadott első tábla összes rekordját (bal oldali illesztés) vagy az illesztésben megadott második tábla összes rekordját (jobb oldali illesztés) tartalmazza-e. A külső illesztés az alábbi SQL-szintaxist tartalmazza:

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

Az illesztések lekérdezésekben való használatáról további információt a Táblák és lekérdezések összekapcsolása című témakörben talál.

Vissza a lap tetejére

A WHERE záradék testreszabása

A WHERE záradékba olyan feltételek foglalhatók, amelyekkel korlátozható a lekérdezés által visszaadott elemek száma. Ezek leírása és működése a lekérdezésfeltételek példáit bemutató témakörben található.

Az alapszintű WHERE záradék testreszabására példa a lekérdezés eredményeinek korlátozása; Tegyük fel, hogy meg szeretné keresni egy ügyfél telefonszámát, és csak a vezetéknevét tudja megjegyezni Bagel néven. Ebben a példában a vezetéknevek egy Vezetéknév mezőben vannak tárolva, így az SQL szintaxisa a következő:

WHERE [LastName]='Bagel'

A WHERE záradék használatával adatforrásokat is kombinálhat az egyező, de eltérő adattípusú oszlopokhoz. Ez a lehetőség azért hasznos, mert a táblák nem illeszthetők különböző adattípusú mezőkön keresztül. Ilyenkor a LIKE kulcsszóval az egyik mezőt a másik mezőre vonatkozó feltételként határozhatja meg. Ha például egy Assets (Eszközök) és Employees (Alkalmazottak) táblából származó adatokat szeretne használni, akkor csak akkor, ha az Eszközök tábla Eszköztípus mezőjében az eszköz típusa az Alkalmazottak tábla Mennyiség mezőjében a 3-at tartalmazza, a WHERE záradék így nézne ki:

WHERE field1 LIKE field2

Fontos:  Ha a mező összesítő függvényben szerepel a WHERE záradékon belül, akkor nem határozhatók meg rá feltételek. Az összesített mezőkön a HAVING záradékot kell alkalmazni.

Vissza a lap tetejére

Testreszabás a UNION operátorral

A UNION operátort akkor kell alkalmazni, ha több hasonló választó lekérdezés eredményét összevontan szeretné megjeleníteni. Ha például az adatbázisnak van egy Termékek és egy Szolgáltatások táblája, és mindkettőnek három mezője: kizárólagos ajánlat, illetve termék vagy szolgáltatás, ár, valamint jótállás, illetve garancia. Ebben az esetben a Termékek tábla jótállás mezője és a Szolgáltatások tábla garancia mezője lényegében ugyanazt az információt tartalmazza. Ekkor a két tábla három mezőjét a következőképpen egyesítheti egy egyesítő lekérdezéssel:

SELECT name, price, warranty, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee, exclusive_offer FROM Services;

A lekérdezés futtatásakor az egyes kapcsolódó mezőhalmazok egyetlen kimeneti mezőbe kerülnek. Ha az eredmények között a többször előforduló elemeket is meg szeretné jeleníteni, akkor használja az ALL operátort.

Megjegyzés:  A két SELECT utasításban ugyanannyi kimeneti mezőnek kell lennie, ugyanabban a sorrendben, és a mezőpárok adattípusának meg kell egyeznie vagy egymással kompatibilisnek kell lennie. Egyesítő lekérdezésekben a Szám és a Szöveg adattípus kompatibilisnek számít.

Az egyesítő lekérdezésekről a Több lekérdezés eredményének együttes megjelenítése egyesítő lekérdezéssel című témakörben olvashat bővebben.

Vissza a lap tetejére

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.