Delphi - Az SQL Builder használata

SQL Builder 2. rész

forráskód letöltése
A cikk második részében az SQL Builder eddig nem tárgyalt lehetőségeiről lesz szó. Megnézzük, hogy hogyan tudunk mezők szerint csoportosított, valamint több táblás lekérdezéseket készíteni.
Egy SQL lekérdezést csoportosíthatunk akár több mező szerint is (GROUP BY). Ezt általában akkor használjuk, amikor a mezők adatait összegezzük, vagy más hasonló műveletet végzünk velük. Ha csoportosítunk, akkor a csoportosításban az összes egyszerű mezőnek szerepelnie kell.
Nézzünk egy egyszerű példát: adott egy tábla, amelyben egy cég dolgozóinak fizetései vannak tárolva havi bontásban. Ez legalább három mezőt feltételez: a dolgozó egyedi azonosítója (A), a dátum (B), és végül a kifizetett összeg (C). Ha egy listát szeretnénk arról, hogy egy-egy dolgozó eddig összesen mennyi fizetést kapott, akkor egy olyan lekérdezést kell készítenünk, amelyben a C mező értékét összegezzük az A mező szerint csoportosítva. Ekkor a Selection lapon megadjuk az A mezőt, valamint egy kalkulált mezőt a SUM(C) függvénnyel. Ekkor az A mező automatikusan csoportosító mező lesz, tehát a Grouping lapon átkerül a Grouped On listába. Ennek eredménye az lesz, hogy a lekérdezés minden rekordja egy-egy dolgozóhoz fog tartozni, és a dolgozó azonosítója mellett megjelenik a neki eddig kifizetett összeg.
A Grouping Criteria lapon a csoportosítás feltételeit adhatjuk meg. A Criteria lapon megadható feltételekkel itt nem mezőket adunk meg, hanem kifejezéseket. Itt is háromféle feltétel megadási mód közül választhatunk:
  • SQL Expression: a feltételt SQL kifejezéssel adjuk meg;
  • Simple Having Summary Expression: egy kifejezést hasonlítunk össze egy mezővel, vagy egy konstans értékkel;
  • Two Summary Expression: két kifejezés eredményét hasonlítjuk össze.
A Sorting lapon megadhatjuk azokat a mezőket, amelyek tartalma szerint rendezni kívánjuk a lekérdezés eredményét. A jobboldali listába kell áttenni a rendezésben résztvevő mezőket az Add gombbal. Az elsődleges rendezési szempont a listában legfelül lévő mező, majd az alatta lévő, és így tovább. A mezők sorrendjét a lista fölött látható fekete nyilakkal lehet módosítani. Az „A..Z” és „Z..A” kapcsolókkal állíthatjuk, hogy a rendezés növekvő (Ascending), vagy csökkenő (Descending) legyen-e.
Ha többtáblás lekérdezést készítünk, akkor két lehetőségünk van a táblák összekapcsolására. Az egyik, hogy a Criteria lapon a kapcsolódó mezők egyenlőségét adjuk meg feltételnek. A másik módszer a Joins lap használata, amit tulajdonképpen csak a kapcsolat részleteinek beállítására érdemes használni. A kapcsolatot ugyanis megadhatjuk egyszerűen úgy is, hogy a táblák kapcsolódó mezőit egyszerűen egymásra húzzuk. Ekkor egy egyszerű INNER JOIN kapcsolat jön létre, ami meg is jelenik a Joins lapon.
Mivel kettőnél több táblát is használhatunk egy lekérdezésben, így több tábla kapcsolatainak szerkesztésére is szükség van. A lista fölötti legördülő listából kiválaszthatjuk, hogy melyik táblák kapcsolatait szeretnénk szerkeszteni. A szerkesztendő kapcsolatot a Table Pane ablakban is kiválaszthatjuk, egyszerűen a kapcsolatot reprezentáló vonalra kattintva.
Jobb- és baloldalon találunk két kapcsolót (Include Unmached Records). Ha a kapcsoló be van kapcsolva, akkor a hozzá tartozó tábla összes rekordja szerepelni fog a lekérdezés eredményében, attól függetlenül, hogy a kapcsolódó táblában van-e a kapcsolatban megadott feltételnek megfelelő rekord.

SQL Builder cikksorozat

Az SQL Builder használata - SQL Builder 1. rész

Az SQL Builder használata - SQL Builder 2. rész