Sobes.tech
Junior — Middle

Εξηγήστε τι είναι οι αναδρομικές Εκφράσεις Κοινών Πινάκων (CTE) και πώς χρησιμοποιούνται σε ερωτήματα SQL

sobes.tech AI

Απάντηση από AI

Οι Αναφορές Πίνακα Κοινών Αναφορών (CTE) είναι ένας ειδικός τύπος προσωρινών συνόλων αποτελεσμάτων σε SQL, που μπορούν να αναφέρονται στον εαυτό τους για την εκτέλεση αναδρομικών ερωτημάτων. Είναι χρήσιμες για εργασία με ιεραρχικά ή γραφικά δομές δεδομένων, π.χ., για την περιήγηση σε ένα δέντρο κατηγοριών, την οργάνωση υπαλλήλων κατά υποταγή κ.λπ.

Ένα αναδρομικό CTE αποτελείται από δύο μέρη:

  1. Βασικό ερώτημα — αρχικό σύνολο γραμμών.
  2. Αναδρομικό ερώτημα — χρησιμοποιεί τα αποτελέσματα της προηγούμενης επανάληψης για να πάρει το επόμενο επίπεδο δεδομένων.

Παράδειγμα: λήψη όλων των υποταγμένων υπαλλήλων με 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 των ήδη βρεθέντων υπαλλήλων, μέχρι να διασχίσει ολόκληρη την ιεραρχία.