Τα SQL Joins μπορούν να εξηγηθούν και να γίνουν κατανοητά, πολύ εύκολα, με τη χρήση διαγραμμάτων Venn. Θα αναφερθώ στα παρακάτω :
- INNER JOIN
- LEFT ( OUTER ) JOIN
- RIGHT ( OUTER ) JOIN
- FULL ( OUTER ) JOIN
- LEFT JOIN EXCLUDING INNER JOIN
- RIGHT JOIN EXCLUDING INNER JOIN
- OUTER JOIN EXCLUDING INNER JOIN
1. INNER JOIN ( A∩B )
Επιστρέφει μόνο τις τιμές που υπάρχουν και στους δύο πίνακες.SELECT * FROM A INNER JOIN B ON A.key = B.key
2. LEFT ( OUTER ) JOIN ( A )
Επιστρέφει όλες τις τιμές που υπάρχουν στην αριστερή πλευρά ( πίνακας Α ), μαζί με όσες τιμές αντιστοιχούν στη δεξιά ( πίνακας Β ). Αν δεν υπάρχει αντιστοίχιση με τιμή στη δεξιά πλευρά, η δεξιά πλευρά επιστρέφει null.SELECT * FROM A LEFT OUTER JOIN B ON A.key = B.key
3. RIGHT ( OUTER ) JOIN ( B )
Επιστρέφει όλες τις τιμές που υπάρχουν στην δεξιά πλευρά ( πίνακας Β ), μαζί με όσες τιμές αντιστοιχούν στην αριστερή ( πίνακας Α ). Αν δεν υπάρχει αντιστοίχιση με τιμή στην αριστερή πλευρά, η αριστερή πλευρά επιστρέφει null.SELECT * FROM A RIGHT OUTER JOIN B ON A.key = B.key
4. FULL ( OUTER ) JOIN ( A∪Β )
Επιστρέφει όλες τις τιμές και από τους δύο πίνακες. Όταν δεν υπάρχει αντιστοίχιση σε κάποια πλευρά, εκεί επιστρέφεται null.SELECT * FROM A FULL OUTER JOIN B ON A.key = B.key
5. LEFT JOIN EXCLUDING INNER JOIN ( A - B )
Επιστρέφει μόνο τις τιμές που υπάρχουν στην αριστερή πλευρά ( πίνακας Α ). Στην δεξιά πλευρά επιστρέφεται null.SELECT * FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL
6. RIGHT JOIN EXCLUDING INNER JOIN ( B - A )
Επιστρέφει μόνο τις τιμές που υπάρχουν στην δεξιά πλευρά ( πίνακας Β ). Στην αριστερή πλευρά επιστρέφεται null.SELECT * FROM A RIGHT JOIN B ON A.key = B.key WHERE A.key IS NULL
7. FULL OUTER JOIN EXCLUDING INNER JOIN ( A∪Β - Α∩Β )
Επιστρέφει όλες τις τιμές που υπάρχουν είτε στην δεξιά, είτε στην αριστερή πλευρά ( πίνακας Α ή Β ). Επειδή δεν υπάρχουν αντιστοιχίσεις, η μία στήλη θα επιστρέφει πάντα null.SELECT * FROM A FULL OUTER JOIN B ON A.key = B.key WHERE A.key IS NULL OR B.key IS NULL
No comments:
Post a Comment