SELF JOIN

A MySQL self join egy olyan típusú join, amikor egy tábla önmagával van összekapcsolva. Ez akkor hasznos, ha egy táblában lévő adatokat össze kell kapcsolni (vagy hasonlítani) ugyanannak a táblának más soraival.

A self join használatához a következő lépéseket kell végrehajtani:

Például:

Van egy dolgozok tábla, amelyben a dolgozók adatai találhatók, és szeretnénk megtalálni azokat a dolgozókat, akik ugyanannak a vezetőnek a vezetése alatt dolgoznak, akkor a következő lekérdezést használhatjuk:

SELECT dolgozo.nev, vezeto.nev FROM dolgozok as dolgozo INNER JOIN dolgozok as vezeto ON dolgozo.vezeto_id = vezeto.id;

Ebben a példában a dolgozok tábla önmagával van összekapcsolva az INNER JOIN használatával. A join feltétele az, hogy a vezeto_id oszlop értéke megegyezzen a másik tábla id oszlopának értékével.

A self join használata lehetővé teszi, hogy összetett lekérdezéseket hajtsunk végre egyetlen táblán, anélkül, hogy szükség lenne további táblák létrehozására.

self join gyakorlás:

Táblák: sql

dolgozok

id nev kor fizetes osztaly vezeto_id
1 Kovács János 30 200000 1 3
2 Szabó István 25 180000 1 3
3 Nagy Zoltán 40 250000 2 null
4 Tóth Mária 28 220000 2 1
5 Kiss Péter 35 200000 1 2

osztalyok

id nev atlag_fizetes
1 Értékesítés 210000
2 Fejlesztés 230000

Feladatok:

  1. Keresse meg azokat a dolgozókat, akik ugyanannak a vezetőnek a vezetése alatt dolgoznak, mint Kovács János.
  2. Listázza ki azokat a dolgozókat, akiknek a vezetője szintén a táblában szerepel. A listában jelenjen meg a dolgozó és a vezető neve.
  3. Keresse meg azokat a dolgozókat, akiknek a fizetése azonos, és akiknek a kora különbözik. A listán jelenítse meg a dolgozó nevét, fizetését és korát!
  4. Keresse meg azokat a dolgozókat, akiknek a fizetése magasabb, mint a másik dolgozó fizetése, és akiknek az osztálya azonos. A listán szerepeljen a dolgozók neve és fizetése valamint az osztály!