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 Αναμένεται να λάβετε: 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 διασφαλίζει ότι ακόμη και οι υπάλληλοι χωρίς διευθυντή (π.χ. Ivan και Bob) θα έχουν μια γραμμή με manager_name = NULL.

Έτσι, το ερώτημα εμφανίζει τα ονόματα των υπαλλήλων και των διευθυντών τους, εάν υπάρχουν, που αντιστοιχεί στο αναμενόμενο αποτέλεσμα.