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 Očekivani rezultat: 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 АИ

Одговор од АИ

U datom primeru, SQL upit ispravno implementira prikaz spiska zaposlenih i njihovih nadređenih iz iste tabele staff pomoću self JOIN.

Tabela staff sadrži polja id, name i head_id, gde je head_id referenca na id nadređenog zaposlenog.

Upit:

SELECT e.name AS employee_name, m.name AS manager_name
FROM staff e
LEFT JOIN staff m ON e.head_id = m.id
  • e je alias za zaposlene.
  • m je alias za njihove menadžere.
  • LEFT JOIN garantuje da čak i zaposleni bez menadžera (npr. Ivan i Bob) dobiju red sa manager_name = NULL.

Na ovaj način, upit prikazuje imena zaposlenih i imena njihovih nadređenih, ako ih imaju, što odgovara očekivanom rezultatu.