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 болатын жолды қамтамасыз етеді.
Осылайша, сұрау қызметкерлердің есімдерін және олардың басшыларын көрсетеді, егер бар болса, бұл күтілген нәтижеге сәйкес келеді.