Sobes.tech
Senior

CREATE TABLE staff ( id TEXT name TEXT head_id TEXT ); id | name | head_id -------------------- 1 | Ivan | NULL 2 | Petr | 1 3 | Alice | 1 4 | Max | 2 5 | Alex | 2 6 | Elena | 4 7 | Bob | NULL Várható eredmény: employee_name | manager_name --------------------------- Ivan | NULL Petr | Ivan Alice | Ivan Max | Petr Alex | Petr Elena | Max Bob | NULL SELECT e.name AS employee_name, m.name AS manager_name FROM staff e LEFT JOIN staff m ON e.head_id = m.id

sobes.tech MI

Válasz az MI-től

A megadott példában az SQL lekérdezés helyesen valósítja meg az alkalmazottak és vezetőik listájának megjelenítését ugyanabból a staff táblából self JOIN segítségével.

A staff tábla tartalmazza az id, name és head_id mezőket, ahol a head_id az alkalmazott vezetőjének id-jére utal.

Lekérdezés:

SELECT e.name AS employee_name, m.name AS manager_name
FROM staff e
LEFT JOIN staff m ON e.head_id = m.id
  • Az e az alkalmazottak aliasa.
  • A m a vezetőik aliasa.
  • A LEFT JOIN biztosítja, hogy még azok az alkalmazottak is megjelenjenek, akiknek nincs vezetőjük (pl. Ivan és Bob), és ilyenkor a manager_name NULL lesz.

Így a lekérdezés megjeleníti az alkalmazottak nevét és vezetőik nevét, ha vannak, ami megfelel a várt eredménynek.