Junior
Ποια είναι η διαφορά μεταξύ INNER JOIN και OUTER JOIN;
sobes.tech AI
Απάντηση από AI
INNER JOIN επιστρέφει μόνο τις γραμμές που έχουν αντιστοιχίσεις και στις δύο πίνακες σύμφωνα με την συνθήκη σύνδεσης. Αν σε έναν από τους πίνακες δεν υπάρχει αντίστοιχη εγγραφή, αυτή η γραμμή δεν θα εμφανιστεί στο αποτέλεσμα.
OUTER JOIN επιστρέφει όλες τις γραμμές από έναν πίνακα και τις αντίστοιχες από τον άλλο, και αν δεν υπάρχουν αντιστοιχίσεις, τα κενά δεδομένα θα είναι NULL. Υπάρχουν τρεις τύποι OUTER JOIN:
- LEFT OUTER JOIN — όλες οι γραμμές από τον αριστερό πίνακα + τις αντίστοιχες από τον δεξιό;
- RIGHT OUTER JOIN — όλες οι γραμμές από τον δεξιό πίνακα + τις αντίστοιχες από τον αριστερό;
- FULL OUTER JOIN — όλες οι γραμμές και από τους δύο πίνακες, όπου δεν υπάρχουν αντιστοιχίσεις, NULL.
Παράδειγμα:
SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- θα επιστρέψει μόνο τους υπαλλήλους που έχουν τμήμα
SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- θα επιστρέψει όλους τους υπαλλήλους, ακόμα και αν δεν έχουν τμήμα (στα πεδία departments θα είναι NULL)