Όταν σκέφτεστε ενώνει δύο πίνακες , σκέφτεστε πιθανώς ένα ερώτημα με ένα απλό ενταχθούν από ένα τραπέζι , όπως εργαζόμενοι με έναν πίνακα όπως Τμήματα :
SELECT Employees.last_name , Employees.first_name , Departments.department_nameFROM Τμήματα , EmployeesWHERE Departments.department_id = Employees.department_id ?
Αυτή είναι μια εσωτερική σύνδεση . Ανακτά μόνο τις γραμμές όπου η department_id είναι ακριβώς ίση και στους δύο πίνακες . Ο παραπάνω κώδικας δουλεύει σε MySQL , αλλά μπορείτε να το βρείτε λιγότερο ευανάγνωστη από το ακόλουθο κείμενο :
SELECT Employees.last_name , Employees.first_name , Departments.department_nameFROM DepartmentsINNER JOIN EmployeesON Departments.department_id = Employees.department_id ?
Αυτά τα δύο ερωτήματα παράγουν ακριβώς το ίδιο αποτέλεσμα . Η διαφορά είναι ότι με τη χρήση της MySQL JOIN λέξη-κλειδί , έχετε κάνει το πιο προφανές τι είδους ενταχθούν που χρησιμοποιήσατε . Από εσωτερικός σύνδεσμος είναι η προεπιλογή, αν φύγετε από τη λέξη-κλειδί INNER , MySQL εκτελεί ακόμα μια εσωτερική σύνδεση .
Εικόνων Outer ενώνει
Η
Αν έχετε εργαζόμενοι που δεν έχουν ανατεθεί σε ένα συγκεκριμένο τμήμα και να έχουν μια τιμή NULL για department_id τους, το παραπάνω ενταχθούν δεν θα εμφανίσει τους εργαζομένους σε όλα . Αν θέλετε όλους τους εργαζόμενους είτε διαθέτουν υπηρεσία ή όχι , θα πρέπει να χρησιμοποιήσετε έναν εξωτερικό σύνδεσμο .
MySQL χρησιμοποιεί ΑΡΙΣΤΕΡΑ ή ΔΕΞΙΑ με τη λέξη-κλειδί JOIN για να καθορίσετε ότι θέλετε έναν εξωτερικό σύνδεσμο , και να πει τα οποία ο πίνακας θέλετε τις τιμές NULL από . Εδώ είναι αναθεωρημένη ερώτημα μας :
SELECT Employees.last_name , Employees.first_name , Departments.department_nameFROM EmployeesLEFT ΕΞΩΤΕΡΙΚΗ JOIN DepartmentON Departments.department_id = Employees.department_id ?
Μπορείτε να πάρετε κάθε εργαζόμενο στην παραγωγή σας , ακόμη αν MySQL βρίσκει κανένα department_id να ταιριάζουν με την εγγραφή των εργαζομένων . Ο πίνακας θέλετε να επιτρέψετε μηδενικά από ( τμήματα ) είναι στα αριστερά του ίσον.
Αν ήθελε να δει τμήματα χωρίς υπαλλήλους της παραγωγής σας , θα πρέπει να χρησιμοποιήσετε ένα δεξιό εξωτερικό σύνδεσμο . Ο πίνακας θέλετε να επιτρέψετε μηδενικά από την εν λόγω υπόθεση είναι στα δεξιά του ίσον.
Η σταυρός ενώνει
Η Να κάνει σταυρός ενώνει από ατύχημα είναι ένα κοινό λάθος . Είναι ό, τι συμβαίνει όταν δεν καθορίσετε μια ενταχθούν σε όλα . Αν δεν τεθεί είτε ένα ενταχθούν σε σας πρόταση WHERE , ή να χρησιμοποιήσετε ένα από το άλλο ... JOIN ON επιλογές , μπορείτε να πάρετε κάθε πιθανό συνδυασμό των γραμμών σε κάθε ένα από τους πίνακες που σου ΑΠΟ αν έχουν σχέση ή όχι .
Αν τραβήξει από τρεις πίνακες που έχουν , αντίστοιχα , 10 , 20 , και 3 σειρές , μπορείτε να πάρετε 10 x 20 x 3 σειρές , όπως η συνολική παραγωγή σας . Μπορείτε να δείτε το πρόβλημα αυτό προκαλεί εάν η βάση δεδομένων σας έχει περισσότερο από μερικά αρχεία .
Σπάνια , θα θελήσετε να κάνετε ένα σταυρό ενταχθούν στο σκοπό. MySQL σας επιτρέπει να χρησιμοποιήσετε το CROSS JOIN ON ... σύνταξη για να δείξει κανείς την επεξεργασία του κώδικα σας αργότερα ότι ο σταυρός ενταχθούν ήταν εσκεμμένη .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα