Παράδειγμα σύνταξης
SELECT order_items.id, orders.order_date, order_items.price
FROM order_items
LEFT OUTER JOIN orders
ON order_items.order_id = orders.id;
Τα Joins συνδυάζουν γραμμές από δύο ή περισσότερους πίνακες με βάση μια σχετιζόμενη στήλη μεταξύ τους.
Οπτικοποίηση των Joins
SELECT * FROM `A` INNER JOIN `B`
┌────────┐
│ A ┌───┼────┐
│ │ ∩ │ │
└────┼───┘ B │
└────────┘
| Τύπος Join | Συμπεριλαμβανόμενα δεδομένα | Περιγραφή |
|---|---|---|
INNER JOIN |
∩ |
Επιστρέφει εγγραφές με αντίστοιχες τιμές και στους δύο πίνακες |
LEFT OUTER JOIN |
A + ∩ |
Επιστρέφει όλες τις εγγραφές από τον πίνακα A και τις αντίστοιχες από τον B |
RIGHT OUTER JOIN |
∩ + B |
Επιστρέφει όλες τις εγγραφές από τον πίνακα B και τις αντίστοιχες από τον A |
FULL OUTER JOIN |
A + ∩ + B |
Επιστρέφει όλες τις εγγραφές όταν υπάρχει ταύτιση σε έναν από τους δύο πίνακες |
Παραλλαγές Join και φίλτρα
Left Join εξαιρώντας την τομή
SELECT * FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL;
Right Join εξαιρώντας την τομή
SELECT * FROM A
RIGHT JOIN B ON A.key = B.key
WHERE A.key IS NULL;
Full Outer Join εξαιρώντας την τομή
SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key
WHERE A.key IS NULL OR B.key IS NULL;