Junior
Πώς λειτουργεί το SQL Join;
sobes.tech AI
Απάντηση από AI
Η JOIN σε SQL συνδυάζει γραμμές από δύο ή περισσότερους πίνακες βάσει μιας σχετικής στήλης μεταξύ τους. Υπάρχουν διάφοροι τύποι JOIN:
INNER JOIN: Επιστρέφει γραμμές όπου υπάρχουν ταιριάσματα τιμών και στους δύο πίνακες.LEFT (OUTER) JOIN: Επιστρέφει όλες τις γραμμές από τον αριστερό πίνακα και τις ταιριαστές γραμμές από τον δεξιό. Αν δεν υπάρχει ταιριάσμα στον δεξιό πίνακα, επιστρέφονται τιμέςNULLγια τις στήλες του δεξιού πίνακα.RIGHT (OUTER) JOIN: Επιστρέφει όλες τις γραμμές από τον δεξιό πίνακα και τις ταιριαστές γραμμές από τον αριστερό. Αν δεν υπάρχει ταιριάσμα στον αριστερό πίνακα, επιστρέφονται τιμέςNULLγια τις στήλες του αριστερού πίνακα.FULL (OUTER) JOIN: Επιστρέφει όλες τις γραμμές και από τους δύο πίνακες. Αν δεν υπάρχει ταιριάσμα, επιστρέφονται τιμέςNULLγια τις αντίστοιχες στήλες.CROSS JOIN: Επιστρέφει το καρτεσιανό προϊόν των δύο πινάκων (κάθε γραμμή από τον πρώτο πίνακα συνδυάζεται με κάθε γραμμή από τον δεύτερο).
Η σύνταξη συνήθως φαίνεται έτσι:
SELECT στήλη1, στήλη2...
FROM πίνακας1
JOIN πίνακας2 ON πίνακας1.κοινή_στήλη = πίνακας2.κοινή_στήλη;
Παράδειγμα INNER JOIN:
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
Ας δούμε τους πίνακες customers και orders:
customers
| customer_id | customer_name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
orders
| order_id | customer_id | amount |
|---|---|---|
| 101 | 1 | 100 |
| 102 | 2 | 150 |
| 103 | 1 | 200 |
| 104 | 4 | 50 |
Το αποτέλεσμα του INNER JOIN θα είναι:
| order_id | customer_name |
|---|---|
| 101 | Alice |
| 102 | Bob |
| 103 | Alice |
Το αποτέλεσμα του LEFT JOIN (orders LEFT JOIN customers):
| order_id | customer_id | amount | customer_name |
|---|---|---|---|
| 101 | 1 | 100 | Alice |
| 102 | 2 | 150 | Bob |
| 103 | 1 | 200 | Alice |
| 104 | 4 | 50 | NULL |