JOINS στον SQL Server: Εκμάθηση με παραδείγματα

Μπορούμε να ανακτήσουμε δεδομένα από περισσότερους από έναν πίνακες χρησιμοποιώντας την πρόταση JOIN. Υπάρχουν κυρίως 4 διαφορετικοί τύποι JOINS στον SQL server. Θα μάθουμε όλα τα JOINS Διακομιστής SQL με παραδείγματα:

  • ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ/Απλή ένωση
  • ΑΡΙΣΤΕΡΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ/ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ
  • ΔΕΞΙΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ/ΔΕΞΙΑ ΣΥΝΔΕΣΗ
  • ΠΛΗΡΗΣ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Αυτός ο τύπος διακομιστή SQL JOIN επιστρέφει σειρές από όλους τους πίνακες στους οποίους η συνθήκη σύνδεσης είναι αληθής. Παίρνει την ακόλουθη σύνταξη:

SELECT columns
FROM table_1 
INNER JOIN table_2
ON table_1.column = table_2.column;

Θα χρησιμοποιήσουμε τους παρακάτω δύο πίνακες για να το δείξουμε:

Πίνακας μαθητών:

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Πίνακας τελών:

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Η ακόλουθη εντολή δείχνει μια ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ σε διακομιστή SQL με παράδειγμα:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
INNER JOIN Fee
ON Students.admission = Fee.admission

Η εντολή επιστρέφει τα εξής:

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Μπορούμε να πούμε στους μαθητές που έχουν πληρώσει τα δίδακτρα τους. Χρησιμοποιήσαμε τη στήλη με κοινές τιμές και στους δύο πίνακες, που είναι η στήλη αποδοχής.

ΑΡΙΣΤΕΡΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Αυτός ο τύπος ένωσης θα επιστρέψει όλες τις σειρές από τον αριστερό πίνακα συν τις εγγραφές στον δεξιό πίνακα με αντίστοιχες τιμές. Για παράδειγμα:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
LEFT OUTER JOIN Fee
ON Students.admission = Fee.admission

Ο κώδικας επιστρέφει τα εξής:

ΑΡΙΣΤΕΡΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Οι εγγραφές χωρίς αντίστοιχες τιμές αντικαθίστανται με NULL στις αντίστοιχες στήλες.

ΔΕΞΙΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Αυτός ο τύπος ένωσης επιστρέφει όλες τις σειρές από τον δεξιό πίνακα και μόνο εκείνες με αντίστοιχες τιμές στον αριστερό πίνακα. Για παράδειγμα:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
RIGHT OUTER JOIN Fee
ON Students.admission = Fee.admission

Η δήλωση για τον διακομιστή OUTER JOINS SQL επιστρέφει τα ακόλουθα:

ΔΕΞΙΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Ο λόγος για το παραπάνω αποτέλεσμα είναι ότι όλες οι σειρές στον πίνακα Fee είναι διαθέσιμες στον πίνακα Students όταν αντιστοιχίζονται στη στήλη αποδοχής.

ΠΛΗΡΗΣ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Αυτός ο τύπος ένωσης επιστρέφει όλες τις σειρές και από τους δύο πίνακες με τιμές NULL όπου η συνθήκη JOIN δεν είναι αληθής. Για παράδειγμα:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
FULL OUTER JOIN Fee
ON Students.admission = Fee.admission

Ο κώδικας επιστρέφει το ακόλουθο αποτέλεσμα για ερωτήματα FULL OUTER JOINS SQL:

ΠΛΗΡΗΣ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ