JOIN στο SQL

Η SQL join χρησιμοποιείται για να ανακτήσουμε δεδομένα από τις τράπεζες δεδομένων με βάση τη σχέση μεταξύ των στηλών των δύο ή περισσότερων τραπεζών δεδομένων.

Join και Κλειδί

Συχνά για να αποκτήσουμε πλήρες αποτέλεσμα, χρειαζόμαστε δεδομένα από δύο ή περισσότερες τράπεζες δεδομένων. Πρέπει να εκτελέσουμε join.

Οι τράπεζες δεδομένων μπορούν να συνδέονται μεταξύ τους μέσω κλειδιών. Το κλειδί κύριο (Primary Key) είναι μια στήλη όπου κάθε γραμμή έχει μοναδική τιμή. Στην τράπεζα δεδομένων, κάθε τιμή του κλειδιού κύριου είναι μοναδική. Ο σκοπός αυτού είναι να συνδέουν τα δεδομένα μεταξύ των τραπεζών δεδομένων χωρίς να επαναλαμβάνουν τα δεδομένα σε κάθε τράπεζα.

Επόμενα παρακαλώ δείτε την τράπεζα δεδομένων "Persons":

Id_P LastName FirstName Διεύθυνση Πόλη
1 Adams John Oxford Street Λονδίνο
2 Μπους Γεώργιος Fifth Avenue New York
3 Carter Thomas Changan Street Πεκίνο

Παρακαλώ σημειώστε ότι η στήλη "Id_P" είναι το κλειδί κύριο στη τράπεζα δεδομένων "Persons". Αυτό σημαίνει ότι δεν υπάρχει δύο γραμμές που να έχουν την ίδια τιμή Id_P. Ακόμα και αν τα ονόματα δύο ατόμων είναι πλήρως ταυτόσημα, το Id_P μπορεί να τους διακρίνει.

Επόμενα παρακαλώ δείτε την τράπεζα δεδομένων "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

Παρακαλώ σημειώστε ότι η στήλη "Id_O" είναι το κλειδί κύριο στη τράπεζα δεδομένων "Orders", ενώ η στήλη "Id_P" στη τράπεζα δεδομένων "Orders" χρησιμοποιείται για να αναφέρεται σε άτομα από την τράπεζα δεδομένων "Persons" χωρίς να χρειάζεται να χρησιμοποιείται το ακριβές όνομα τους.

Παρακαλώ σημειώστε ότι η στήλη "Id_P" συνδέει τις δύο παραπάνω τραπέζες.

Αναφορά δύο τραπεζών

Μπορούμε να αποκτήσουμε δεδομένα από δύο τραπέζια αναφερόμενος στις δύο τραπέζες;

Ποιοι παραγέλλουν προϊόντα και τι παραγέλλουν;

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

Συνολικό αποτέλεσμα:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - Χρήση Join

Πέρα από τον παραπάνω τρόπο, μπορούμε επίσης να χρησιμοποιήσουμε το κλειδί JOIN για να αποκτήσουμε δεδομένα από δύο τραπέζια.

Αν θέλουμε να καταγράψουμε τις παραγγελίες όλων των ατόμων, μπορούμε να χρησιμοποιήσουμε την παρακάτω ανάκληση SELECT:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

Συνολικό αποτέλεσμα:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

Διαφορετικοί τύποι SQL JOIN

Πέρα από το INNER JOIN (πραγματικός συνδυασμός) που χρησιμοποιήσαμε στα παραδείγματα παραπάνω, μπορούμε να χρησιμοποιήσουμε και άλλες μορφές συνδυασμού.

Κατωτέρω παρατίθενται οι τύποι JOIN που μπορείτε να χρησιμοποιήσετε, καθώς και οι διαφορές μεταξύ τους.

  • JOIN: Αν υπάρχει τουλάχιστον ένα ταιριάσματα στη τράπεζα, επιστρέφει τις γραμμές
  • LEFT JOIN: Ακόμα και αν δεν υπάρχει ταιριάσματα στο δεξί τραπέζι, επιστρέφει όλες τις γραμμές από το αριστερό τραπέζι
  • RIGHT JOIN: Ακόμα και αν δεν υπάρχει ταιριάσματα στο αριστερό τραπέζι, επιστρέφει όλες τις γραμμές από το δεξί τραπέζι
  • FULL JOIN: Αν υπάρχει ταιριάσματα σε οποιοδήποτε από τα δύο τραπέζια, επιστρέφει τις γραμμές