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 /Bonyolultabb lekérdezések

Lekérdezések

Választó lekérdezések

Bonyolultabb lekérdezések

Ebben az alfejezetben olyan részfeladatokat ajánlok megoldásra, melyekben az összes ezt megelőző lekérdezési témakör, feladattípus egyszerre megtalálható, továbbá olyan feladatok is szerepelnek itt, amiket egyik korábbi kategóriába sem tudtam besorolni.

OKTV 2005/2006. 3. forduló 10. feladat (Járatok) F részfeladat

Feladat

A feladat roppant egyszerű(nek hangzik): ki kell listázni azon járatok azonosítóját, amelyek megállnak Agárdon és Baracskán is.

Példa

Javasolt megoldás:

Megoldási terv:

Egyetlen probléma vetődik fel az egész feladat kapcsán. Hogyan fogalmazzuk meg egy mezőre, hogy megáll a járat Agárdon és Baracskán is? Hiszen ha azt írnánk be Település mező feltételébe, hogy „Agárd And Baracska”, akkor – teljesen jogosan – a lekérdezés egy üres halmazt adna vissza. Hiszen a Település mezők vagy azt tartalmazzák, hogy „Agárd” vagy azt, hogy „Baracska”. De akkor mégis hogyan tudjuk megoldani a feladatot?

A válasz egyszerű: kétszer használjuk fel a Menetrend táblát.

Javasolt megoldás lépései:

  • Készítsünk egy lekérdezést Tervező nézetben!
  • Adjuk hozzá kétszer a Menetrend táblát a lekérdezéshez!
  • Jelenítsük meg a Menetrend tábla Járatazonosító mezőjét, és adjuk hozzá a lekérdezéshez a Menetrend és a Menetrend_1 táblák Település mezőit is!
  • Írjuk be a Menetrend tábla Feltétel sorába azt, hogy „Agárd”, a Menetrend_1 tábláéba pedig azt, hogy „Baracska”. Váltsunk át Adatlap nézetre!
  • Láthatjuk, hogy rengetegszer megkaptuk ugyanazt, sőt, ha az adatbázis tábláiban elkezdünk szétnézni, azt is láthatjuk, hogy olyan járatazonosítók is megjelentek a lekérdezés eredményében, amelyek nem is állnak meg mindkét településen. Például az 1-es és 5-ös számú járatok. Mi lehet ennek az oka? A válasz rendkívül egyszerű: nincsenek összekapcsolva a táblák. És mivel nincsenek összekapcsolva, ezért az adatbázis-kezelő rendszer az egyik tábla minden sorát összepárosította a másik tábla minden sorával, vagyis direktszorzatot képzett. Hogy lehet ezt megszüntetni?
  • Kapcsoljuk össze a lekérdezésen belül a Menetrend és a Menetrend_1 táblákat a Járatazonosító mezőkön keresztül!
Megjegyzés

Ezt az összekapcsolást nevezzük self-joinnak.

  • Ha ezután Adatlap nézetre váltunk, láthatjuk, hogy most már csak azok a járatok jelennek meg, amelyeknél egyszerre szerepel Agárd és Baracska is a Település mezőkben. Viszont mivel a feladat csak a járatazonosítókat kérte, ezért a Megjelenítést kapcsoljuk ki a Település mezőkre! Ha mindent jól csináltunk, akkor ezt kell látnunk a Tervező nézetben:
A kép (nagyobb változata) külön ablakban is megtekinthető.48_full.jpg48. ábra: A Járatok című feladat F részfeladatának megoldása tervező nézetben
  • Mentsük a lekérdezést F néven, és zárjuk is be!

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