Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Tehetséggondozás az informatikában – Adatbázis-kezelés / Lekérdezések /Tartalmazza/Nem tartalmazza

Lekérdezések

Választó lekérdezések

Tartalmazza/Nem tartalmazza

Előfordulhat olyan feladat, amikor azt kell meghatároznunk, hogy egy mező nem tartalmaz valamit, vagy nem rendelkezik valamilyen tulajdonsággal, stb. Ilyen esetekben legtöbbször allekérdezést kell készítenünk, majd azt felhasználva a feltételben az allekérdezés eredményhalmazát az IN vagy NOT IN kulcsszavak valamelyikével a főlekérdezés megfelelő mezőjéhez kell kötnünk.

Másik eset, amikor olyan rekordokat kell megkeresünk, amelyek egyik mezője üres. Ilyenkor az üres mezőbe az Is NULL feltétel kerül.

Vannak olyan esetek is, amikor célszerű az ilyen típusú feladat megoldására a Nem egyezőket kereső lekérdezés varázslót használni.

OKTV 2004/2005. 3. forduló 5. feladat (Tagnyilvántartás) G részfeladat

Feladat

Ebben a részfeladatban azt kell megvizsgálnunk, hogy hány olyan budapesti tagja van az Internetfüggők Országos Egyesületének, akiknek az újság mezőjében nem szerepel semmi.

Példa

Javasolt megoldás lépései:

  • Hozzunk létre egy lekérdezést Tervező nézetben!
  • Mivel létszámot kell számolnunk, ezért szükségünk lesz a Tag táblára. Ezen kívül szükség lesz a Varos táblára is, hiszen a lekérdezés eredményében csak a budapesti tagoknak kell szerepelniük. Ahhoz azonban, hogy a már beállított kapcsolat e két tábla között a lekérdezésben is érvényesüljön, hozzá kell még adnunk a lekérdezéshez az Irszam_varos nevű kapcsolótáblát is.
  • Adjuk hozzá a lekérdezéshez a Tag tábla kod és ujsag mezőit, valamint a Varos tábla varosnev mezőjét!
  • A következő lépés, hogy megszámoljuk városonként a tagokat. Kattintsunk a szalagon a Tervezés fülön az Összesítés gombra! Ezután a varosnev mező összesítés sorában állítsuk be a Group by záradékot, hiszen városonként számoljuk meg a taglétszámot. Ha ez megvan, akkor a kod mező Összesítés sorában állítsuk be a Count összesítő függvényt!
  • Mivel csak a budapesti tagokra vagyunk kíváncsiak, ezért a varosnev mező Feltétel sorába írjuk be, hogy „Budapest”!
  • Most már csak annyit kell tennünk, hogy meghatározzuk azokat a tagokat, akiknek az ujsag mezőjében nem szerepel semmi. Az ujsag mező Feltétel sorába írjuk be az Is NULL feltételt! Fontos, hogy a varosnev mezőre vonatkozó feltétel („Budapest”) és az ujsag mezőre vonatkozó feltétel (Is NULL) között logikai ÉS kapcsolat van, tehát a két feltételnek egy sorban kell szerepelnie.
  • Ezen kívül még fontos, hogy az ujsag mező Összesítés sorában beállítsuk a Where záradékot. Miért is? A Csoportosítás, összesítő függvények című alfejezetben részletesen tárgyaltuk, hogy a Where záradékot olyan feltételt tartalmazó mezőkre kell alkalmazni, amelyekkel nem csoportosítunk, és nem is tartalmaznak összesítő függvényeket. Mivel az ujsag mező pontosan ilyen, ezért be kell állítani a Where záradékot. Ha mindent jól csináltunk, akkor a Tervező nézetben ezt kell látnunk:
A kép (nagyobb változata) külön ablakban is megtekinthető.29_full.jpg29. ábra: A Tagnyilvántartás című feladat G részfeladatának megoldása tervező nézetben
  • Zárjuk be a lekérdezést, és mentsük a megadott néven!

OKTV 2007/2008. 2. forduló 8. feladat (Kávé) B részfeladat

Feladat

A feladatban azokat a származási helyeket kell lekérdeznünk, amelyekről nem szállítanak Arabica kávét.

Megjegyzés

Ezt a feladatot kétféleképpen is meg lehet oldani. Meg lehet oldani úgy, hogy az allekérdezést a főlekérdezésbe ágyazva SQL-en írjuk meg (ez esetben a feltételnél használnunk kell a Not In utasítást), vagy pedig külön elkészítjük a QBE rácson az allekérdezést, és használjuk a Nem egyezőket kereső lekérdezés varázslót. Most ez utóbbi megoldást mutatom be részletesen, de a Függelékben megtalálható a másik megoldási mód is.

Példa

Javasolt megoldás:

Megoldási terv:

Két lépésben fogjuk megoldani a feladatot: először elkészítjük az allekérdezést, majd azt felhasználva elkészítjük a végleges megoldást a Nem egyezőket kereső lekérdezés varázsló segítségével.

Javasolt megoldás lépései:

  • Hozzunk létre egy új lekérdezést Tervező nézetbe!. Ez lesz a majdani allekérdezésünk.
  • Az allekérdezésben gyűjtsük ki azokat a származási helyeket, ahonnan szállítanak Arabica kávét! Ehhez szükségünk lesz a tBabkave táblára – hiszen ebben tároljuk a származási hely azonosítókat – valamint a tFajta táblára is (ebben pedig a fajtanevek vannak tárolva).
  • Jelenítsük meg az allekérdezés végeredményében a tBabkave tábla Szarmazas mezőjét és a tFajta tábla Nev mezőjét! Ez utóbbi mező feltételéhez írjuk be, hogy „Arabica”! Mivel csak a származási azonosítókra van szükségünk, ezért szedjük ki a Nev mező Megjelenítés sorából a pipát! Most az alábbi képet kell látnunk:
A kép (nagyobb változata) külön ablakban is megtekinthető.30_full.jpg30. ábra: A Kávé című feladat B részfeladatának allekérdezése tervező nézetben
  • Zárjuk be, és mentsük a lekérdezést B_arabica_segéd néven!
  • Kattintsunk a Létrehozás fülön a Lekérdezés varázsló gombra!
  • A felugró ablakban válasszuk ki a Nem egyezőket kereső lekérdezés varázslót, majd kattintsunk a Tovább gombra!
  • A következő lépésben meg kell adnunk azt a táblát, amiből a végeredményt szeretnénk kilistázni. Ez a tSzarmazas tábla. Jelöljük ki, majd kattintsunk a Tovább gombra!
A kép (nagyobb változata) külön ablakban is megtekinthető.31_full.jpg31. ábra: Annak a táblának a kiválasztása, amiből a végeredményt szeretnénk kapni
  • Most azt az objektumot kell megadnunk, ami a kapcsolódó rekordokat tartalmazza. Ez a B_arabica_segéd nevű lekérdezés. Jelöljük be a Lekérdezéseket, majd jelöljük ki a B_arabica_segéd nevű lekérdezést, és kattintsunk a Tovább gombra!
A kép (nagyobb változata) külön ablakban is megtekinthető.32_full.jpg32. ábra: A kapcsolódó rekordokat tartalmazó objektum megadása
  • A következő lépésben össze kell kapcsolnunk a két objektumot. Ezt az összekapcsolást a tSzarmazas tábla SzAzonosíto és a B_arabica_segéd lekérdezés Szarmazas mezőin keresztül tudjuk megvalósítani, hiszen ezek a mezők tartalmazzák a származási helyek azonosítóit. Jelöljük ki mindkét mezőt, majd kattintsunk a <=> gombra! Így a két mező megjelent az Egyező mezők sorban. Ha megvagyunk, kattintsunk a Tovább gombra!
A kép (nagyobb változata) külön ablakban is megtekinthető.33_full.jpg33. ábra: Az egyező adatokat tartalmazó mezők kiválasztása
  • Az utolsó előtti lépésben azt kell eldöntenünk, hogy a lekérdezés végeredményében mely mezők jelenjenek meg. Mivel a származási helyekre vagyunk kíváncsiak, ezért mind a Nev, mind a SzAzonosíto mezők megjelenhetnek a lekérdezés végeredményében. Adjuk hozzá őket a kijelölt mezőkhöz, majd kattintsunk a Tovább gombra!
A kép (nagyobb változata) külön ablakban is megtekinthető.34_full.jpg34. ábra: A megjelenítendő mezők kiválasztása
  • Az utolsó lépésben el kell neveznünk a lekérdezést. Legyen a neve B_arabica! Miután begépeltük, kattintsunk a Befejezés gombra, és tekintsük meg munkánk végeredményét!

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.
Készült az "Országos koordinációval a pedagógusképzés megújításáért” című TÁMOP-4.1.2.B.2-13/1-2013-0007 pályázat keretében.

A tananyag az ELTESCORM keretrendszerrel készült