SQL Join σε πολλαπλές συνθήκες

Sql Join Se Pollaples Synthekes



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

Η ένωση των πινάκων μας επιτρέπει να ανακτήσουμε τα δεδομένα που είναι αποθηκευμένα σε πολλούς πίνακες σε ένα μόνο ερώτημα, γεγονός που το καθιστά ένα ισχυρό εργαλείο για την ανάλυση δεδομένων και την αναφορά.







Σε αυτό το σεμινάριο, θα ανακαλύψουμε πώς να εκτελούμε τις συνδέσεις SQL σε πολλαπλές συνθήκες. Θα μάθουμε να χρησιμοποιούμε τους λογικούς τελεστές «AND» και «OR» για να ενώνουμε τα δεδομένα βάσει πολλαπλών συνθηκών.



Ενώσεις SQL σε πολλαπλές συνθήκες

Μπορούμε να καθορίσουμε πολλαπλές συνθήκες χρησιμοποιώντας τους τελεστές AND ή OR στην SQL. Αυτοί οι τελεστές μας επιτρέπουν να ορίσουμε ένα σύνολο Boolean παραστάσεων οι οποίες στη συνέχεια αξιολογούνται και συγκρίνονται με το σύνολο που προκύπτει.



Χρησιμοποιούμε τον τελεστή AND για να διασφαλίσουμε ότι όλες οι καθορισμένες συνθήκες είναι αληθείς. Εάν έστω και μία από τις συνθήκες δεν είναι αληθής, ολόκληρη η έκφραση αποδίδεται ψευδής. Αυτό καθιστά τον τελεστή AND ένα εξαιρετικό εργαλείο για ακραίο φιλτράρισμα δεδομένων.





Από την άλλη πλευρά, χρησιμοποιούμε τον τελεστή OR όταν χρειαζόμαστε τουλάχιστον μία από τις συνθήκες για να είναι αληθής. Αυτό την καθιστά μια πιο «χαλαρή» μέθοδο φιλτραρίσματος δεδομένων, καθώς η εγγραφή που προκύπτει πρέπει να πληροί τουλάχιστον μία καθορισμένη παράμετρο.

Η λειτουργικότητα των τελεστών AND και OR δεν αλλάζει ακόμη και στην περίπτωση των συνδέσεων SQL.



Παράδειγμα πολλαπλών συνδέσεων SQL

Για να κατανοήσετε πώς να εργάζεστε με συνδέσεις σε πολλαπλές συνθήκες, είναι καλύτερο να δουλέψετε με ένα παράδειγμα.

Για αυτήν την επίδειξη, χρησιμοποιούμε τη βάση δεδομένων Sakila που αναπτύχθηκε για να εξερευνήσει τις πλήρεις δυνατότητες της SQL.

Ας υποθέσουμε ότι θέλουμε να ανακτήσουμε τα δεδομένα από την ταινία και τους πίνακες film_actor. Αρχικά, θέλουμε να βρούμε όλους τους ηθοποιούς που πρωταγωνίστησαν στην ταινία που έχουν βαθμολογία PG ή PG-13 και έχουν μήκος μεταξύ 90 και 120.

Σε ένα τέτοιο σενάριο, πρέπει να εκτελέσουμε μια ένωση με πολλαπλές συνθήκες όπως φαίνεται παρακάτω:

SELECT actor.first_name, actor.last_name, film.title, film.release_year, film.rating
ΑΠΟ ηθοποιό
JOIN film_actor ON actor.actor_id = film_actor.actor_id
JOIN film ON film_actor.film_id = film.film_id
ΟΠΟΥ φιλμ.μήκους ΜΕΣΑ 90 ΚΑΙ 120
ΚΑΙ ταινία.βαθμολόγηση ΣΕ ( 'PG' , 'PG-13' ) ;


Όπως μπορείτε να δείτε από το προηγούμενο ερώτημα, λέμε στην SQL να πραγματοποιήσει μια ένωση μεταξύ των πινάκων actor και film_actor με βάση τη στήλη actor_id. Πραγματοποιούμε επίσης μια ένωση μεταξύ του film_actor και των πινάκων φιλμ χρησιμοποιώντας τη στήλη film_id. Φροντίζουμε επίσης να ορίσουμε δύο συνθήκες χρησιμοποιώντας την ρήτρα WHERE για να φιλτράρουμε τον πίνακα αποτελεσμάτων με βάση το έτος κυκλοφορίας και τη διάρκεια του φιλμ.

Ο πίνακας που προκύπτει έχει ως εξής:


Μπορούμε επίσης να καθορίσουμε τις πολλαπλές συνθήκες με βάση τον τελεστή OR όπως φαίνεται στο ακόλουθο παράδειγμα ερωτήματος:

SELECT film.title, film.rental_rate, category.name
ΑΠΟ ταινία
JOIN film_category ON film.film_id = film_category.film_id
ΕΓΓΡΑΦΗ στην κατηγορία ON film_category.category_id = category.category_id
ΠΟΥ κατηγορία.όνομα ΕΙΣ ( 'Δράση' , 'Κωμωδία' )
ΚΑΙ film.rental_rate > 3.00 ;


Ο πίνακας που προκύπτει έχει ως εξής:

συμπέρασμα

Αυτό το σεμινάριο διερεύνησε τον τρόπο εργασίας με συνδέσεις SQL με βάση πολλαπλές συνθήκες χρησιμοποιώντας τους τελεστές AND και OR. Αυτό παρέχει πιο αναλυτικό φιλτράρισμα δεδομένων.