Πότε να χρησιμοποιήσετε το MySQL Self Join και Παραδείγματα

When Use Mysql Self Join



Το MySQL Self-Join είναι ένας τύπος SQL Join που σας επιτρέπει να ενώσετε έναν πίνακα στον εαυτό του. Λειτουργεί χρησιμοποιώντας άλλους τύπους σύνδεσης, όπως εσωτερική ή αριστερή ρήτρα σύνδεσης, για να συνδυάσει γραμμές με βάση τις καθορισμένες συνθήκες.

Αυτό το σεμινάριο θα σας δείξει πώς να χρησιμοποιήσετε την αυτόματη σύνδεση MySQL για να συγχωνεύσετε έναν πίνακα με τον εαυτό του και να δημιουργήσετε προσαρμοσμένα δεδομένα.







Βασική Χρήση

Το MySQL self-join χρησιμοποιεί ψευδώνυμα πίνακα για να διασφαλίσει ότι δεν επαναλαμβάνετε τον ίδιο πίνακα περισσότερες από μία φορές σε μια δήλωση.



ΣΗΜΕΙΩΣΗ: Εάν δεν είστε εξοικειωμένοι με τα ψευδώνυμα του πίνακα, σκεφτείτε το άλλο μας σεμινάριο που εξηγεί πλήρως την έννοια.



Η γενική σύνταξη για τη χρήση μιας αυτο-σύνδεσης είναι παρόμοια με αυτήν όταν συνδυάζετε δύο πίνακες. Ωστόσο, χρησιμοποιούμε ψευδώνυμα πίνακα. Εξετάστε το ερώτημα που εμφανίζεται παρακάτω:





ΕΠΙΛΕΓΩ alias1.cols,alias2.cols ΑΠΟ tbl1 ψευδώνυμο1,tbl2 ψευδώνυμο2 ΟΠΟΥ [κατάσταση]

Παράδειγμα Περιπτώσεις χρήσης

Ας χρησιμοποιήσουμε παραδείγματα για να καταλάβουμε πώς να πραγματοποιούμε τις αυτο -συνδέσεις MySQL. Ας υποθέσουμε ότι έχετε μια βάση δεδομένων με τις ακόλουθες πληροφορίες (Δείτε ολόκληρο το ερώτημα παρακάτω)

ΠΤΩΣΗ ΣΧΗΜΑ ΑΝ ΥΠΑΡΧΕΙ εαυτός?
ΔΗΜΙΟΥΡΓΩ ΣΧΗΜΑ εαυτός?
ΧΡΗΣΗ εαυτός?
ΔΗΜΙΟΥΡΓΩ ΤΡΑΠΕΖΙ χρήστες(
ταυτότητα INT ΠΡΩΤΕΥΩΝ ΚΛΕΙΔΙ ΑΥΤΟΜΑΤΗ ΑΥΞΗΣΗ ,
όνομα VARCHAR (255),
ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ VARCHAR (255),
αναγνωριστικό πληρωμής INT ,
συνδρομή INT
)?
ΕΙΣΑΓΕΤΕ ΣΕ χρήστες(όνομα,ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ,αναγνωριστικό πληρωμής,συνδρομή) ΑΞΙΕΣ ('Valerie G. Phillip', '[email protected]', 10001, 1), («Ιστορίες Sean R.», '[email protected]', 10005, 2), ('Bobby S. Newsome', '[email protected]', 100010, 5)?

Θα ξεκινήσουμε με μια ΕΣΩΤΕΡΙΚΗ ένταξη και τέλος με μια αριστερή συμμετοχή.



Self Join χρησιμοποιώντας το Inner Join

Το παρακάτω ερώτημα εκτελεί μια ΕΣΩΤΕΡΙΚΗ σύνδεση στον πίνακα που δημιουργήθηκε παραπάνω.

ΕΠΙΛΕΓΩ al1.* ΑΠΟ χρήστες al1 ΕΣΩΤΕΡΙΚΟΣ ΣΥΜΜΕΤΟΧΗ χρήστες al2 ΕΠΙ al1.subscription=al2.subscription ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ ταυτότητα DESC ?

Η έξοδος εμφανίζεται παρακάτω:

Self Join χρησιμοποιώντας Left Join

Το παρακάτω ερώτημα επεξηγεί πώς μπορούμε να χρησιμοποιήσουμε το self join με το left join.

ΕΠΙΛΕΓΩ ( CONCAT (al1.first_name, '->',al2.email)) ΟΠΩΣ ΚΑΙ Λεπτομέριες,al1.payment_id ΑΠΟ χρήστες al1 ΑΡΙΣΤΕΡΑ ΣΥΜΜΕΤΟΧΗ χρήστες al2 ΕΠΙ al1.id=al2.id?

Το αποτέλεσμα εξόδου είναι παρακάτω:

συμπέρασμα

Αυτός ο οδηγός σάς καθοδήγησε πώς μπορείτε να χρησιμοποιήσετε το My join του MySQL για να ενώσετε ένα τραπέζι με τον εαυτό του.

Ευχαριστούμε που το διαβάσατε.