Junior — Middle
Εξηγήστε τι είναι οι αναδρομικές Εκφράσεις Κοινών Πινάκων (CTE) και πώς χρησιμοποιούνται σε ερωτήματα SQL
sobes.tech AI
Απάντηση από AI
Οι Αναφορές Πίνακα Κοινών Αναφορών (CTE) είναι ένας ειδικός τύπος προσωρινών συνόλων αποτελεσμάτων σε SQL, που μπορούν να αναφέρονται στον εαυτό τους για την εκτέλεση αναδρομικών ερωτημάτων. Είναι χρήσιμες για εργασία με ιεραρχικά ή γραφικά δομές δεδομένων, π.χ., για την περιήγηση σε ένα δέντρο κατηγοριών, την οργάνωση υπαλλήλων κατά υποταγή κ.λπ.
Ένα αναδρομικό CTE αποτελείται από δύο μέρη:
- Βασικό ερώτημα — αρχικό σύνολο γραμμών.
- Αναδρομικό ερώτημα — χρησιμοποιεί τα αποτελέσματα της προηγούμενης επανάληψης για να πάρει το επόμενο επίπεδο δεδομένων.
Παράδειγμα: λήψη όλων των υποταγμένων υπαλλήλων με id = 1 σε μια ιεραρχία υπαλλήλων.
WITH RECURSIVE Subordinates AS (
SELECT id, manager_id, name
FROM employees
WHERE id = 1 -- βασική περίπτωση
UNION ALL
SELECT e.id, e.manager_id, e.name
FROM employees e
INNER JOIN Subordinates s ON e.manager_id = s.id -- αναδρομική περίπτωση
)
SELECT * FROM Subordinates;
Αυτή η ερώτηση επιλέγει πρώτα τον υπάλληλο με id=1, στη συνέχεια προσθέτει αναδρομικά όλους τους υπαλλήλους των οποίων το manager_id ταιριάζει με το id των ήδη βρεθέντων υπαλλήλων, μέχρι να διασχίσει ολόκληρη την ιεραρχία.