Ποιοι τύποι JOIN γνωρίζετε και ποια είναι η διαφορά τους;
sobes.tech AI
Απάντηση από AI
Οι βασικοί τύποι JOIN σε SQL και οι διαφορές τους:
-
INNER JOIN — επιστρέφει μόνο τις εγγραφές που έχουν αντιστοιχίσεις και στις δύο πίνακες σύμφωνα με την συνθήκη σύνδεσης.
-
LEFT JOIN (LEFT OUTER JOIN) — επιστρέφει όλες τις εγγραφές από τον αριστερό πίνακα και τις αντιστοιχίσεις από τον δεξιό. Αν δεν υπάρχουν αντιστοιχίσεις, τα πεδία του δεξιού πίνακα θα είναι NULL.
-
RIGHT JOIN (RIGHT OUTER JOIN) — επιστρέφει όλες τις εγγραφές από τον δεξιό πίνακα και τις αντιστοιχίσεις από τον αριστερό.
-
FULL JOIN (FULL OUTER JOIN) — επιστρέφει όλες τις εγγραφές και από τους δύο πίνακες, είτε υπάρχουν αντιστοιχίσεις είτε όχι, με NULL στα κενά.
-
CROSS JOIN — καρτεσιανό γινόμενο δύο πινάκων, επιστρέφει όλες τις δυνατές συνδυασμούς γραμμών.
Παράδειγμα:
-- INNER JOIN
SELECT * FROM A INNER JOIN B ON A.id = B.a_id;
-- LEFT JOIN
SELECT * FROM A LEFT JOIN B ON A.id = B.a_id;
-- RIGHT JOIN
SELECT * FROM A RIGHT JOIN B ON A.id = B.a_id;
-- FULL JOIN
SELECT * FROM A FULL JOIN B ON A.id = B.a_id;
-- CROSS JOIN
SELECT * FROM A CROSS JOIN B;
Η επιλογή JOIN εξαρτάται από τα δεδομένα που θέλετε να λάβετε και πώς θα διαχειριστείτε τις απουσίες αντιστοιχίσεων.