ΥπολογιστέςΠρογραμματισμός

Αριστερή ένωση (SQL) - παράδειγμα, λεπτομερής περιγραφή, σφάλματα χρήσης

Σε κάθε πραγματική σχεσιακή βάση δεδομένων, όλες οι πληροφορίες διανέμεται σε ξεχωριστό πίνακα. Πολλοί από τους πίνακες που παρατίθενται στο σύστημα επικοινωνίας μεταξύ τους. Ωστόσο, με τη βοήθεια του Sql ερωτήματα είναι πολύ πιθανό να οικοδομήσουμε μια σχέση μεταξύ των δεδομένων, δεν είναι ενσωματωμένο στο κύκλωμα. Αυτό γίνεται με την εκτέλεση μιας σύνδεσης ενταχθούν, η οποία σας επιτρέπει να οικοδομήσουμε μια σχέση μεταξύ οποιουδήποτε αριθμού των πινάκων, και ακόμη και συνδεθείτε φαινομενικά ανόμοιες πληροφορίες.

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

Η προετοιμασία των απαραίτητων πινάκων

Για παράδειγμα, στην βάση δεδομένων μας υπάρχουν πληροφορίες για τους ανθρώπους και ακίνητη περιουσία τους. Περίληψη βασίζεται σε τρεις πίνακες: Λαών (οι άνθρωποι), Realty (real estate), Realty_peoples (πίνακας σχέσεις, οι άνθρωποι που από ό, τι το ακίνητο ανήκει). Έστω ότι τα δεδομένα που είναι αποθηκευμένα στους πίνακες του λαού:

λαών

ταυτότητα

L_name

F_name

Middle_name

γενέθλια

1

Ιβάνοβα

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Αλέξανδρος

Federovich

04/30/1964

4

Ανίνα

αγάπη

Π

31.12.1989

5

Gerasimovsky

ελπίδα

Π

03/14/1992

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

7

Sukhanovskaya

ένορκοι

Α

09/25/1976

8

Sukhanovskaya

Τζούλια

Υ

01.10.2001

Real estate:

ακίνητη περιουσία

ταυτότητα

διεύθυνση

1

Αρχάγγελσκ, ul. Βορονίν, d. 7, kv.6

2

Αρχάγγελσκ, ul. Severodvinskaya, d. 84, q. 9 BR. 5

3

περιοχή Αρχάγγελσκ, Severodvinsk, st. Λένιν, d. 134, q. 85

4

περιοχή Αρχάγγελσκ, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

Αρχάγγελσκ, pl. Terekhina, d. 89, q. 13

Σχέσεις άνθρωποι - το ακίνητο:

Realty_peoples

id_peoples

id_realty

τύπος

7

3

Σύνολο συνιδιοκτησίας

8

3

Σύνολο συνιδιοκτησίας

3

5

ιδιοκτησία

7

1

ιδιοκτησία

5

4

κοινά μέρη

6

4

κοινά μέρη

LEFT JOIN (SQL) - Περιγραφή

Αριστερά ένωση έχει την ακόλουθη σύνταξη:

Table_A LEFT JOIN table_B [{ON κατηγόρημα} | {ΧΡΗΣΗ spisok_ με tolbtsov}]

Και σχηματικά ως εξής:

Και αυτή η έκφραση μεταφράζεται ως «Επιλογή όλων, χωρίς εξαίρεση, γραμμή του πίνακα Α και στον πίνακα Β για να εμφανίσετε μόνο τις γραμμές που ταιριάζουν το κατηγόρημα. Αν ο πίνακας βρέθηκε στο τραπέζι κορδόνι για ζευγάρια A, στη συνέχεια συμπληρώστε τα προκύπτοντα στήλες Null - τιμές».

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

Αριστερά ενταχθούν - παραδείγματα της χρήσης

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

SELECT Λαών. *, Realty_peoples.id_realty, Realty_peoples.type

ΑΠΟ Λαών LEFT JOIN Realty_peoples ΓΙΑ Peoples.id = Realty_peoples.id_peoples?

Με τα ακόλουθα αποτελέσματα:

Query1

ταυτότητα

L_name

F_name

Middle_name

γενέθλια

id_realty

τύπος

1

Ιβάνοβα

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Αλέξανδρος

Federovich

04/30/1964

5

ιδιοκτησία

4

Ανίνα

αγάπη

Π

31.12.1989

5

Gerasimovsky

ελπίδα

Π

03/14/1992

4

κοινά μέρη

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

κοινά μέρη

7

Sukhanovskaya

ένορκοι

Α

09/25/1976

1

ιδιοκτησία

7

Sukhanovskaya

ένορκοι

Α

09/25/1976

3

Σύνολο συνιδιοκτησίας

8

Sukhanovskaya

Τζούλια

Υ

01.10.2001

3

Σύνολο συνιδιοκτησίας

Όπως βλέπουμε, Ιβάνοβα Darya Pugin Vladislav και Anninoy Lyubovi Δεν υπάρχουν εγγεγραμμένα δικαιώματα ακινήτων.

Και τι θα έχουμε λάβει, χρησιμοποιώντας ένα εσωτερικό ενταχθούν Εσωτερική ενταχθούν; Όπως γνωρίζετε, αποκλείει σειρές που δεν ταιριάζουν, έτσι τρεις από τον τελικό μας δείγμα απλά θα πέσει:

Query1

ταυτότητα

L_name

F_name

Middle_name

γενέθλια

id_realty

τύπος

3

Evgenin

Αλέξανδρος

Federovich

04/30/1964

5

ιδιοκτησία

5

Gerasimovsky

ελπίδα

Π

03/14/1992

4

κοινά μέρη

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

κοινά μέρη

7

Sukhanovskaya

ένορκοι

Α

09/25/1976

1

ιδιοκτησία

7

Sukhanovskaya

ένορκοι

Α

09/25/1976

3

Σύνολο συνιδιοκτησίας

8

Sukhanovskaya

Τζούλια

Υ

01.10.2001

3

Σύνολο συνιδιοκτησίας

Φαίνεται ότι η δεύτερη εκδοχή πληροί επίσης τους όρους του προβλήματος μας. Ωστόσο, αν αρχίσουμε να επισυνάψετε σε ένα άλλο, και άλλο τραπέζι, τρία άτομα από το αποτέλεσμα ήδη ανεπανόρθωτα φύγει. Ως εκ τούτου, στην πράξη, όταν συνδυάζουν πολλαπλά τραπέζια που χρησιμοποιούνται πολύ πιο συχνά αριστερά και δεξιά σύνδεση από το εσωτερικό ενταχθούν.

Θα συνεχίσουμε να κοιτάξουμε προς τα αριστερά ενταχθούν SQL παραδείγματα. Συνδέστε έναν πίνακα με τις διευθύνσεις των σπιτιών μας:

SELECT Λαών. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

ΑΠΟ Λαών

LEFT JOIN Realty_peoples ΓΙΑ Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ΓΙΑ Realty.id = Realty_peoples.id_realty

Τώρα έχουμε όχι μόνο ένα είδος δικαίου, αλλά και τη διεύθυνση της ακίνητης περιουσίας:

Query1

ταυτότητα

L_name

F_name

Middle_name

γενέθλια

id_realty

τύπος

διεύθυνση

1

Ιβάνοβα

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Αλέξανδρος

Federovich

04/30/1964

5

ιδιοκτησία

Αρχάγγελσκ, pl. Terekhina, d. 89, q. 13

4

Ανίνα

αγάπη

Π

31.12.1989

5

Gerasimovsky

ελπίδα

Π

03/14/1992

4

κοινά μέρη

περιοχή Αρχάγγελσκ, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

κοινά μέρη

περιοχή Αρχάγγελσκ, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

ένορκοι

Α

09/25/1976

3

Σύνολο συνιδιοκτησίας

περιοχή Αρχάγγελσκ, Severodvinsk, st. Λένιν, d. 134, q. 85

7

Sukhanovskaya

ένορκοι

Α

09/25/1976

1

ιδιοκτησία

Αρχάγγελσκ, ul. Βορονίν, d. 7, kv.6

8

Sukhanovskaya

Τζούλια

Υ

01.10.2001

3

Σύνολο συνιδιοκτησίας

περιοχή Αρχάγγελσκ, Severodvinsk, st. Λένιν, d. 134, q. 85

Αριστερά ενταχθούν - την τυπική χρήση των λάθους: άκυρη τραπέζι διαδικασία

Βασικά λάθη που έγιναν στο αριστερό εξωτερικό σύνδεσμο πίνακες, δύο:

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

Εξετάστε πρώτο λάθος. Πριν από την απόφαση του οποιουδήποτε προβλήματος πρέπει να καταστεί σαφές ότι αυτό που θέλουν να πάρουν στο τέλος. Σε αυτό το παράδειγμα παραπάνω, πήραμε κάθε ένας από τους ανθρώπους, αλλά έχασε εντελώς τις πληροφορίες σχετικά με το αντικείμενο κάτω από τον αριθμό 2, του οποίου ο ιδιοκτήτης δεν βρέθηκε.

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

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

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

Αριστερά ενταχθούν - την τυπική χρήση των λάθους: Αίτημα είναι σωστό κατά τον καθορισμό των προϋποθέσεων της Πού

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

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

ΑΠΟ Λαών LEFT JOIN Realty_peoples ΓΙΑ Peoples.id = Realty_peoples.id_peoples?

Ας υποθέσουμε ότι θέλουμε να διευκρινίσει την αίτηση και δεν εξάγει τα δεδομένα, όπου ο τύπος του νόμου - «Ακίνητα». Αν απλά προσαρτήσει, χρησιμοποιώντας το αριστερό ενταχθούν SQL, ένα παράδειγμα της τις ακόλουθες συνθήκες:

...

Σε περίπτωση που ο τύπος <> «Ακίνητα»

θα χάσετε τα δεδομένα για ανθρώπους που δεν έχουν καμία περιουσία, επειδή η μηδενική τιμή null δεν συγκρίνεται ως εξής:

Query1

ταυτότητα

L_name

F_name

Middle_name

γενέθλια

id_realty

τύπος

5

Gerasimovsky

ελπίδα

Π

03/14/1992

4

κοινά μέρη

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

κοινά μέρη

7

Sukhanovskaya

ένορκοι

Α

09/25/1976

3

Σύνολο συνιδιοκτησίας

8

Sukhanovskaya

Τζούλια

Υ

01.10.2001

3

Σύνολο συνιδιοκτησίας

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

SELECT Λαών. *, Realty_peoples.id_realty, Realty_peoples.type

ΑΠΟ Λαών

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples ΚΑΙ τύπο <> "Ακίνητα")

Το αποτέλεσμα θα είναι ως εξής:

Query1

ταυτότητα

L_name

F_name

Middle_name

γενέθλια

id_realty

τύπος

1

Ιβάνοβα

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

01/29/1986

3

Evgenin

Αλέξανδρος

Federovich

04/30/1964

4

Ανίνα

αγάπη

Π

31.12.1989

5

Gerasimovsky

ελπίδα

Π

03/14/1992

4

κοινά μέρη

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

κοινά μέρη

7

Sukhanovskaya

ένορκοι

Α

09/25/1976

3

Σύνολο συνιδιοκτησίας

8

Sukhanovskaya

Τζούλια

Υ

01.10.2001

3

Σύνολο συνιδιοκτησίας

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

Συμπερασματικά, θα ήθελα να τονίσω για άλλη μια φορά ότι πρέπει να ληφθούν υπεύθυνα δείγμα οποιαδήποτε πληροφορία από τη βάση δεδομένων. Πολλές αποχρώσεις άνοιξε μπροστά μας με το αριστερό ενταχθούν SQL απλό παράδειγμα, η εξήγηση των οποίων το ένα - πριν ξεκινήσετε να γράφετε ακόμη και τις βασικές ερώτημα, θα πρέπει προσεκτικά να καταλάβουμε τι θέλουμε να πάρει στο τέλος. Καλή τύχη!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 el.delachieve.com. Theme powered by WordPress.