Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
1
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ ΜΕ ΣΥΖΕΥΞΗ ΠΙΝΑΚΩΝ
ΜΑΘΗΜΑ 9
2
ΚΑΡΤΕΣΙΑΝΟ ΓΙΝΟΜΕΝΟ ΚΑΙ ΣΥΖΕΥΞΗ
Αυτό που πρέπει να γνωρίζουμε είναι ότι αυτά που ισχύουν για τα ερωτήματα σε έναν πίνακα ισχύουν και για τα ερωτήματα σε περισσότερους πίνακες. Το μόνο που αλλάζει είναι ότι στην εντολή SELECT μετά το FROM υπάρχουν περισσότεροι πίνακες. Π.χ εάν θέλω να βρω όλες τις λεπτομέρειες δύο πινάκων γράφω την εντολή: SELECT * FROM πίνακας_1, πίνακας_2; Η επιστροφή είναι γνωστή ως καρτεσιανό γινόμενο πίνακας_1 x πίνακας_2 Επιστρέφονται δηλαδή όλοι οι πιθανοί συνδυασμοί εγγραφών μεταξύ των πινάκων.
3
Επειδή στην επιστροφή αυτή θα υπάρξουν δεδομένα που επαναλαμβάνονται χωρίς ουσιαστικά να είναι χρήσιμα θα πρέπει να φτιάξουμε έτσι το ερώτημα μας προς τους πίνακες έτσι ώστε να πάρουμε ως επιστρο-φή «πραγματικά» δεδομένα, που αντιστοιχούν σε εκείνες τις εγγραφές που το κλειδί του πίνακα_1 ταυτίζεται με το κλειδί του πίνακα_2. δηλ. SELECT * FROM πίνακας_1, πίνακας_2 WHERE πίνακας_1.κλειδί = πίνακας_2.κλειδί; Αυτό είναι το αποτέλεσμα της σχεσιακής πράξης της φυσικής σύζευξης: πίνακας_1 πίνακας_2
4
Αυτό το ερώτημα στην SQL2 θα γραφτεί ως εξής:
SELECT * FROM πίνακας_1 INNER JOIN πίνακας_2 ON πίνακας_1.κλειδί = πίνακας_2.κλειδί; Επειδή η σύζευξη γίνεται με βάση το ίδιο κλειδί Από τους δύο πίνακες, που στον έναν θα είναι πρωτεύον και στον άλλο ξένο, τότε μπορεί να γραφτεί ως εξής: SELECT * FROM πίνακας_1 INNER JOIN πίνακας_2 USING(κλειδί);
5
ΨΕΥΔΩΝΥΜΑ ΠΙΝΑΚΩΝ Είδαμε ότι με τον τελεστή AS μπορούμε να αλλάξουμε τα ονόματα πεδίων(στηλών). Το ίδιο ισχύει και με τους πίνακες. Μπορούμε δηλαδή μέσα σε ένα ερώτημα να αλλάξουμε το όνομα του πίνακα_1 σε π και του πίνακα_2 σε ρ. SELECT π.κωδ, π.όνομα, ρ.κωδ FROM πίνακας_1 AS π, πίνακας_2 AS ρ WHERE π.κλειδί = ρ.κλειδί; Μπορούμε να παραλείψουμε τον τελεστή.
6
Τότε το ερώτημα θα γραφτεί: SELECT π. κωδ, π. όνομα, ρ
Τότε το ερώτημα θα γραφτεί: SELECT π.κωδ, π.όνομα, ρ.κωδ FROM πίνακας_1 π, πίνακας_2 ρ WHERE π.κλειδί = ρ.κλειδί; Κόμματα υπάρχουν ανάμεσα στις στήλες και ανάμεσα στους πίνακες, αλλά όχι ανάμεσα στον πίνακα και στο ψευδώνυμό του όπου υπάρχει κενό. Αλλιώς το ερώτημα γράφεται: FROM πίνακας_1 π INNER JOIN πίνακας_2 ρ ON π.κλειδί = ρ.κλειδί;
7
ΕΞΩΤΕΡΙΚΗ ΣΥΖΕΥΞΗ Η εξωτερική σύζευξη δίνει ως αποτέλεσμα ότι και η εσωτερική, αλλά και κάτι επιπλέον, επιστρέφει εγγραφές από την μία ή την άλλη σχέση που δεν έχουν ταιριαστές τιμές. Αν υπάρχουν τέτοιες εγγραφές καταχωρημένες θα εμφανιστούν στο αποτέλεσμα της εξωτερικής σύζευξης. Έχουμε δύο είδη εξωτερικής σύζευξης: Την Αριστερή και την Δεξιά. Συντάσσονται LEFT JOIN και RIGHT JOIN. Συνήθως χρησιμοποιούμε την αριστερή σύζευξη.
8
ΑΡΙΣΤΕΡΗ ΣΥΖΕΥΞΗ SELECT π.πεδιο1, π.πεδιο2, ρ.πεδιο1 FROM πίνακας_1 π LEFT JOIN πίνακας_2 ρ ON π.κλειδί = ρ.κλειδί; Αυτό το ερώτημα μας επιστρέφει όλες τις εγγραφές του πίνακα_1 και τις εγγραφές του πίνακα_2 για τις οποίες οι τιμές στα πεδία π.κλειδί και ρ.κλειδί ταυτίζονται. Το ρ.πεδίο (του δεξιού πίνακα ) θα πάρει την τιμή NULL όπου οι τιμές στα πεδία π.κλειδί και ρ.κλειδί δεν ταυτίζονται.
9
ΔΕΞΙΑ ΣΥΖΕΥΞΗ SELECT π.πεδιο1, π.πεδιο2, ρ.πεδιο1 FROM πίνακας_1 π RIGHT JOIN πίνακας_2 ρ ON π.κλειδί = ρ.κλειδί; Αυτό το ερώτημα μας επιστρέφει όλες τις εγγραφές του πίνακα_2 και τις εγγραφές του πίνακα_1 για τις οποίες οι τιμές στα πεδία π.κλειδί και ρ.κλειδί ταυτίζονται. Τα πεδία π.πεδιο1, π.πεδιο2 (του αριστερού πίνακα ) θα πάρουν την τιμή NULL όπου οι τιμές στα πεδία π.κλειδί και ρ.κλειδί δεν ταυτίζονται.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.