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чакваме да получите: 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 AI

Ҷавоб аз AI

Берілген мысалда, SQL сұрауы дұрыс түрде staff кестесінен қызметкерлер мен олардың басшыларын бір кестеден self JOIN көмегімен көрсетеді.

staff кестесінде id, name және head_id өрістері бар, мұнда head_id қызметкердің басшысының id-не сілтеме жасайды.

Сұрау:

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 — қызметкерлер үшін алиас.
  • m — олардың менеджерлері үшін алиас.
  • LEFT JOIN қызметкердің басшысы жоқ болса да (мысалы, Иван мен Боб) manager_name = NULL болатын жолды қамтамасыз етеді.

Осылайша, сұрау қызметкерлердің есімдерін және олардың басшыларын көрсетеді, егер бар болса, бұл күтілген нәтижеге сәйкес келеді.