Sobes.tech
Senior

Ποιοι τύποι 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 εξαρτάται από τα δεδομένα που θέλετε να λάβετε και πώς θα διαχειριστείτε τις απουσίες αντιστοιχίσεων.