Az SQL lekérdezési nyelv

Összetett lekérdezések

1. Al-lekérdezések

A lekérdezések tetszőlegesen egymásba ágyazhatók a SELECT után és a WHERE feltétel után egyaránt.

SELECT nev, leiras FROM gyumolcsok WHERE nev IN (SELECT DISTINCT gyumcsolnev FROM kiszalltiasok);

A SELECT utáni al-lekérdezéseknek csak egyetlen visszatérési értéke lehet(nem lehet az eredmény több sor).

SELECT nev, (SELECT COUNT(1) FROM kiszallitasok WHERE gyumolcsnev = nev) FROM gyumolcsok;

2. GROUP BY

A megadott feltétel(mező értéke) szerint azonos rekordok csoportosítása, melyet jellemzően aggregáló függvényekkel kiegészítve használunk.

Ebben a lekérdezésben minden rekord külön sorként kerül listázásra és mindenhol 1 lesz a második mező értéke.

SELECET gyumolcsnev, COUNT(*) FROM kiszallitasok;

Ebben a lekérdezésben az azonos nevű gyümölcsök csoportosítva kerülnek feldolgozásra és a COUNT függvény a csoportosított rekordok számát fogja visszaadni.

SELECET gyumolcsnev, COUNT(*) FROM kiszallitasok GROUP BY gyumolcsnev;

3. HAVING

A HAVING segítségével a már csoportosított(GROUP BY) eredményhalmazra tudunk extra feltételeket megadni.

SELECET gyumolcsnev, COUNT(*) FROM kiszallitasok GROUP BY gyumolcsnev HAVING COUNT(*) > 5;

4. JOIN

Joinok segítégével lehetőségünk nyílik különböző táblákban lévő rekordok összefűzésére a mindkét táblában megtalálható mező szerint.

Az alábbi példában a megrendelések és termékek adatait tartalmazó táblákból készítünk egy összesített lekérdezést.

SELECET megrendelesek.nev, termek.nev, megrendelesek.mennyiseg FROM megrendelesek INNER JOIN termekek ON megrendelesek.termek_id = termekek.id;

A megrendeléseket tartalmazó táblában tároljuk a megrendelt termék azonosítóját, ez megtalálható a termekek táblában is. Így ezt a mezőt alapul véve össze tudjuk kapcsolni a két tábla adatait.

A JOIN-nak 4 típusa van:

5. UNION

Kettő vagy több lekérdezés eredményének egyesítése.

Listázza a városokat a különböző táblában tárolt adatokból.

SELECT varos FROM ugyfelek UNION SELECT varos FROM beszallitok;

A két lekérdezés külön-külön is értelmezhető. Az oszlopok számának egyezni kell az egyesíteni kívánt lekérdezésekben.