Lekérdezések 1

A lekérdezés fogalma

A lekérdezések az Access-ben speciális módon (táblázatosan vagy SQL nyelven) megfogalmazott kérdések, feltételek. Lekérdezés segítségével a táblákban tárolt adatok közül kiválogathatjuk azokat, amelyekre szükségünk van. A lekérdezés eredménye megjelenhet külön egy táblázatos formában vagy a megváltozott illetve új adattáblákban.

Lekérdezések létrehozásával kereshetjük meg és gyűjthetjük ki a megadott feltételeknek megfelelő adatokat, akár több táblából is. A lekérdezések egyidejűleg több rekord frissítésére vagy törlésére is használhatók, segítségükkel előre meghatározott vagy egyéni számításokat is végrehajthatunk az adatokon.

Lekérdezés nézetei

(Ez a lekérdezés a Regény táblából azon regények címét [cim] és kiadási évét [ev] adja vissza, amelyeket 1950 és 1990 közt adtak ki a regények címe szerint növekvően rendezve. 2017-es középszintű érettségi adatbáziskezelő feladata: 4. Állatnevek címmel)

Tervezőrács és feltétel(ek)

Tervezőrács

A tervezőrács (QBE?) lekérdezés vagy szűrő tervezésekor használható rács a lekérdezés Tervező nézetében vagy az Irányított szűrés/rendezés ablakban. Tervezőrács felépítése Mező: az eredményben megjelenítendő mező, vagy ha nem is jelenítjük meg, de feltételt kell hozzá megadni Tábla: annak a táblának a neve, amelyikben az adott mező szerepel. Automati-kusan kitöltődik, ha kiválasztottuk a megfelelő mezőt. A lekérdezésben épp részt-vevő táblákat a táblaterületen láthatjuk. Rendezés: meghatározható, hogy növekvő vagy csökkenő sorrendben jelenje-nek-e meg az eredmény rekordjai. Megjelenítés: a mező jelenjen-e meg az eredménytáblában. Előfordulhat, hogy csak feltételt kellett hozzá megadni, de nem akarjuk az eredménytáblában megje-leníteni. Feltétel: ide kell írni a feltételeket, hogy mi alapján kérdezünk; mindig abba azoszlopba, amelyik mezőre a feltétel szól. Ha egyszerre több feltételt kell egy me-zőre adni, akkor a „vagy” sorba írjuk. Ha több mezőre kell feltételt írni, és azokugyanabban a „Feltétel” nevű sorban vannak, akkor azok a feltételek „és” logikai kapcsolatba kerülnek.

Feltételek - néhány egyszerűbb

A feltétel olyan megszorítás egy lekérdezésben vagy irányított szűrőben, amely arra szolgál, hogy meghatározzuk a használni kívánt rekordokat. Ezt/ezeket a tervezőrács valamelyik mezőjének Feltétel cellájába kell beírni.

logikai feltételek And (és), Or (vagy), Xor (kizáró vagy), Not (tagadás, nem)
TRUE, IGAZ, BE ill. FALSE, HAMIS, KI (logikai típusú adatnál az IGAZ vagy bekapcsolt ill. HAMIS vagy kikapcsolt állapot)
a tervezőrácsbeli helyük alapján: ha annak egy sorában vannak, köztük And, ha egy oszlopban, köztük Or a logikai művelet
relációjelek < (kisebb), > (nagyobb), <= (kisebb egyenlő), >= (nagyobb egyenlő), = (egyenlő), <> (nem egyenlő)
operátorok Like "minta" (a minta helyettesítő karakterek tartalmazhat, lásd lejjebb),
Between ... and ... (két szám vagy két dátum közötti értékek),
In(...) (a zárójelben felsorolt, pontosvesszővel elválasztott elemek; több vagy műveletet helyettesíthet),
Is Null (kitöltetlen mező), Is Not Null, "" (üres, de nem kitöltetlen mező)
helyettesítő karakterek * (tetszőleges számú karaktert helyettesít, a karakterláncban bárhol használható),
? (egyetlen tetszőleges karaktert helyettesít),
# (egyetlen tetszőleges számjegyet helyettesít /dátumokat is két # jel közé kell tenni/),
[karakterek] (a szögletes zárójelek között levő karakterek közül bármelyiket helyettesíti),
[!karakterek] (előbbi tagadása),
[karakter1-karakter2] (A karakter1-től karakter2-ig bármely karaktert helyettesít)

Az összes diák helyett például megtekinthetjük azokat, akiknek:
    - neve "H" betűvel kezdődik    és
    - 2004. jan. 1. után születtek    és
    - lakóhelyük "Ajka"    és
    - 9., 10., 11. vagy 12. osztályba járnak    és
    - buktak (sikeresen buktak!)    és
    - a tankönyvtámogatás mező nem üres (ki van töltve)

Ehhez a feltételeket így kell megadni tervező nézetben a tervezőrácson:

és így néz ki a precíz SQL parancs:

Feltételek kombinálása És illetve Vagy operátorral

Több feltételt is meg lehet adni, akár ugyanarra a mezőre, akár másikra. Ha több Feltétel cellában is szerepel valamilyen kifejezés, a Microsoft Access összeköti őket az És vagy a Vagy operátorral.

  • Ha a kifejezések azonos sor különböző celláiban vannak, a Microsoft Access az És operátort használja, ami azt jelenti, hogy csak azok a rekordok felelnek meg, amelyek a sor összes feltételének eleget tesznek.
  • Ha a kifejezések a tervezőrács különböző soraiban vannak, az Access a Vagy operátort használja, ami azt jelenti, hogy bármelyik cellában megadott feltételnek eleget tevő rekordok megjelennek az eredményben.

A következő példákban különféle kombinációkban láthatjuk a feltételeket és az És vagy a Vagy operátort.
 

Egyetlen mező "Or / Vagy" operátorral

1. A tanuló lakhelye "Devecser" vagy "Ajka"

2. Az Access kiírja mindazoknak a tanulóknak a nevét és lakhelyét, akik valamelyik feltételnek eleget tesznek

SELECT TNev, TLHely
FROM Diakok
WHERE (TLHely="Devecser") Or (TLHely="Ajka");

Egyetlen mező "And / És" operátorral

1. A tanuló tankönyvtámogatása 1000 és 20000 forint között van beleértve a határokat is

2. Az Access kiírja mindazoknak a tanulóknak a nevét és tankönyvtámogatását, akik mindkét feltételnek eleget tesznek

SELECT TNev, TkTam
FROM Diakok
WHERE (TkTam>=1000) And (TkTam<=20000);       vagy       WHERE TkTam Between 1000 And 20000;

Két mező "Or / Vagy" operátorral

1. A tanuló hetedikes vagy bukott

2. Az Access kiírja mindazoknak a tanulóknak a nevét, évfolyamát és eredményét, akik valamelyik feltételnek eleget tesznek

SELECT TNev, TEvf, TBukott
FROM Diakok
WHERE (TEvf=7) Or (TBukott=Yes);

Két mező "And / És" operátorral

1. A tanuló ajkai és a Béke utcában lakik

2. Az Access kiírja mindazoknak a tanulóknak a nevét, lakhelyét és lakcímét, akik mindkét feltételnek eleget tesznek

SELECT TNev, TLHely, TLCim
FROM Diakok
WHERE (TLHely="Ajka") And (TLCim Like "Béke*");

Több logikai (Or/Vagy illetve And/És) operátor

1. Listázzuk ki az "A" vagy "B" osztályos leányokat

2. Az Access kiírja mindazoknak a tanulóknak a nevét, évfolyamát és betűjelét, akik A-s leányok vagy B-s leányok

SELECT TNev, TFL, TEvf, TBetu
FROM Diakok
WHERE ((TFL="L") And (TBetu="A")) Or ((TFL="L") And (TBetu="B"));

Több logikai (Or/Vagy illetve And/És) operátor

1. Listázzuk ki a téli hónapokban (dec., jan., febr.) született nem bukott tanulókat

2. Az Access kiírja mindazoknak a tanulóknak a nevét, születési dátumát és eredményét, akik az 1., 2. vagy 12. hónapban születtek és nem buktak

SELECT TNev, TSzDat, TBukott
FROM Diakok
WHERE ((Month([TSzDat])<3) Or (Month([TSzDat])=12)) And (TBukott=No) ;

A feltételek megadásának helye befolyásolja a számítások végrehajtásának időpontját.

Feltételek megadásával befolyásolhatjuk a számításokat, és más-más lekérdezési eredményeket állíthatunk elő. A következőket tehetjük:

  • Korlátozhatjuk, mely csoportokat érintsék majd a számítások.
  • Megszabhatjuk, milyen eredményeket szeretnénk látni a csoportokon végzett számítások után.
  • Meghatározhatjuk, mely rekordok vegyenek majd részt a csoportosításban és a számításokban.

Az adattábla, a lekérdezés, az űrlap és a jelentés összehasonlítása

AdattáblaLekérdezésŰrlapJelentés
A rekordokban lévő adatok módosíthatók, a táblához új rekord adható, illetve rekord is törölhetőAz adatok nem módosíthatók
Csak egyetlen adattáblában lévő mezők módosíthatókTöbb adattáblában lévő mezők módosíthatók, ha a mezőket felvesszükAz adatok nem módosíthatók
Az információk általában csak a képernyőn jelennek megAz adatokat szépen ki is lehet nyomtatni
Több rekord is látható (ez néha zavaró)Általában csak az aktuális rekord láthatóÁltalában több rekord is látható, s valamilyen összegzés
Csak az adattáblában lévő mezők szerepelhetnekSzámított mezők is megjeleníthetők mindhárom objektumnál
Kevés párbeszédelem áll rendelkezésre (pl. beviteli mező, jelölő- négyzet, legördülő lista)A Windows összes grafikus párbeszédeleme alkalmazható
Az adatok megjelenítéséhez szemléletes grafikus eszközök nem állnak rendelkezésreAz adatokat akár diagramban ábrázolva is megjeleníthetjük

Tervezőrács, lekérdezés,
eddig még nem
kell túl sok ész.
(burcsi)