מחשביםתכנות

שמאל להצטרף (SQL) - דוגמא, בתיאור המפורט, שימוש השגיא

בכל מסדי נתונים יחסיים אמיתיים, כל המידע מופץ על שולחן נפרד. רבים מן השולחנות קבועים בתכנית התקשורת אחד עם השני. עם זאת, בעזרת SQL שאילתות זה מן הנמנע לשים קישור בין הנתונים, לא מוטבעים המעגל. הדבר נעשה על ידי ביצוע חיבור להצטרף, אשר מאפשר לך לבנות מערכת יחסים בין כל מספר של שולחנות, ואפילו להתחבר מידע לכאורה מפורד.

מאמר זה יעסוק באופן ספציפי לגבי החיצוני השמאלי להצטרף. לפני שתמשיך התיאור של סוג זה של חיבור, להוסיף כמה טבלאות מסד נתונים.

הכנת טבלאות ההכרחיות

לדוגמא, במסד הנתונים שלנו, יש מידע על אנשי הנדל"ן שלהם. סיכום מבוסס על שלושה שולחנות: עמים (אנשים), Realty (נדל"ן), Realty_peoples (יחסים השולחן, אנשים ממה הנכס שייך). תניח את הנתונים הבאים מאוחסנים בטבלאות של העם:

עמים

id

L_NAME

F_name

Middle_name

יום הולדת

1

איוונובה

דריה

B.

2000/07/16

2

Pugin

ולדיסלב

ניקולייביץ

1986/01/29

3

Evgenin

אלכסנדר

Federovich

1964/04/30

4

אנין

לאהוב

פ

1989/12/31

5

Gerasimovsky

מקווה

פ

1992/03/14

6

Gerasimovsky

אולג

Albertovich

1985/01/29

7

Sukhanovskaya

חבר השופטים

א

1976/09/25

8

Sukhanovskaya

ג'וליה

י '

2001/01/10

נדל"ן:

Realty

id

כתובת

1

ארכנגלסק, ul. וורונין, ד. 7, kv.6

2

ארכנגלסק, ul. Severodvinskaya, ד. 84, q. 9 BR. 5

3

באזור ארכנגלסק, סברודבינסק, רח. לנין, ד. 134, ש. 85

4

באזור ארכנגלסק, Novodvinsk, ul. Proletarshaya, ד. 16, q. 137

5

ארכנגלסק, pl. Terekhina, ד. 89, q. 13

אנשי יחסים - רכוש:

Realty_peoples

id_peoples

id_realty

סוג

7

3

בעלות משותפת סה"כ

8

3

בעלות משותפת סה"כ

3

5

רכוש

7

1

רכוש

5

4

חלקים משותפים

6

4

חלקים משותפים

שמאל להצטרף (SQL) - תיאור

יש מתחם שמאל בתחביר הבא:

Table_A LEFT JOIN table_B [{ON נשוא} | {שימוש spisok_ עם tolbtsov}]

וזה סכמטי כדלקמן:

והביטוי הזה מתורגם כמו "בחר הכל, ללא יוצא מן הכלל, קו של לוח א ולוח ב להציג רק את שורות ההתאמה של הנשוא. אם השולחן נמצא בטבלה מחרוזת עבור זוגות, ולאחר מכן למלא את העמודות וכתוצאה Null - ערכים".

לרוב, כאשר החיבור שנותר הוא מצוין, באמצעות משמש רק כאשר שמות העמודות, אשר תכננו לבצע את החיבור זהים.

השמאל להצטרף - דוגמאות של שימוש

עם החיבור של השמאל אנחנו יכולים לראות, כל האנשים מרשימת אם יש נכס עמים. לשם כך בשמאל להצטרף למשל שאילתת SQL:

עמי SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

מעמים LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

עם התוצאות הבאות:

Query1

id

L_NAME

F_name

Middle_name

יום הולדת

id_realty

סוג

1

איוונובה

דריה

B.

2000/07/16

2

Pugin

ולדיסלב

ניקולייביץ

1986/01/29

3

Evgenin

אלכסנדר

Federovich

1964/04/30

5

רכוש

4

אנין

לאהוב

פ

1989/12/31

5

Gerasimovsky

מקווה

פ

1992/03/14

4

חלקים משותפים

6

Gerasimovsky

אולג

Albertovich

1985/01/29

4

חלקים משותפים

7

Sukhanovskaya

חבר השופטים

א

1976/09/25

1

רכוש

7

Sukhanovskaya

חבר השופטים

א

1976/09/25

3

בעלות משותפת סה"כ

8

Sukhanovskaya

ג'וליה

י '

2001/01/10

3

בעלות משותפת סה"כ

כפי שאנו רואים, איוונובה דריה Pugin ולדיסלב ו Anninoy Lyubovi לא רשום זכויות במקרקעין.

ומה היה שקבלנו, באמצעות פנימי להצטרף Inner להצטרף? כפי שאתם יודעים, זה כולל שורות שאינן תואמות, כך שלוש מתוך המדגם הסופי שלנו היו פשוט להישמט:

Query1

id

L_NAME

F_name

Middle_name

יום הולדת

id_realty

סוג

3

Evgenin

אלכסנדר

Federovich

1964/04/30

5

רכוש

5

Gerasimovsky

מקווה

פ

1992/03/14

4

חלקים משותפים

6

Gerasimovsky

אולג

Albertovich

1985/01/29

4

חלקים משותפים

7

Sukhanovskaya

חבר השופטים

א

1976/09/25

1

רכוש

7

Sukhanovskaya

חבר השופטים

א

1976/09/25

3

בעלות משותפת סה"כ

8

Sukhanovskaya

ג'וליה

י '

2001/01/10

3

בעלות משותפת סה"כ

נראה כי הגרסה השנייה גם עונה על התנאים של הבעיה שלנו. עם זאת, אם אנו מתחילים לצרף על עוד אחד, ועוד שולחן, שלושה אנשים מן התוצאה כבר תקנה נעלמו. לכן, בפועל, כאשר שילוב טבלאות מרובות הרבה יותר קרובות בשימוש שמאל וימין חיבור מ Inner להצטרף.

אמשיך לחפש שמאלה להצטרף דוגמאות SQL. צרף שולחן עם כתובות של הבתים שלנו:

עמי SELECT. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

מעמים

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

עכשיו אנחנו מקבלים לא רק סוג של החוק, אלא גם את הכתובת של הנדל"ן:

Query1

id

L_NAME

F_name

Middle_name

יום הולדת

id_realty

סוג

כתובת

1

איוונובה

דריה

B.

2000/07/16

2

Pugin

ולדיסלב

ניקולייביץ

1986/01/29

3

Evgenin

אלכסנדר

Federovich

1964/04/30

5

רכוש

ארכנגלסק, pl. Terekhina, ד. 89, q. 13

4

אנין

לאהוב

פ

1989/12/31

5

Gerasimovsky

מקווה

פ

1992/03/14

4

חלקים משותפים

באזור ארכנגלסק, Novodvinsk, ul. Proletarshaya, ד. 16, q. 137

6

Gerasimovsky

אולג

Albertovich

1985/01/29

4

חלקים משותפים

באזור ארכנגלסק, Novodvinsk, ul. Proletarshaya, ד. 16, q. 137

7

Sukhanovskaya

חבר השופטים

א

1976/09/25

3

בעלות משותפת סה"כ

באזור ארכנגלסק, סברודבינסק, רח. לנין, ד. 134, ש. 85

7

Sukhanovskaya

חבר השופטים

א

1976/09/25

1

רכוש

ארכנגלסק, ul. וורונין, ד. 7, kv.6

8

Sukhanovskaya

ג'וליה

י '

2001/01/10

3

בעלות משותפת סה"כ

באזור ארכנגלסק, סברודבינסק, רח. לנין, ד. 134, ש. 85

השמאל להצטרף - את השימוש האופייני שגיאה: שולחן הליך חוקי

טעויות בסיסיות שנעשו החיצוני השמאלי להצטרף שולחנות, שני:

  1. כראוי שנבחר סדר השולחנות עבורו נתונים אבדו.
  2. איפה שגיאות בעת שימוש בשאילתא להצטרף שולחנות.

קח טעות ראשונה. לפני החלטת שום בעיה יש להבין בבירור כי מה שאנחנו רוצים להשיג בסופו של דבר. בדוגמה זו לעיל, לקחנו כל אחד ואחד העם, אבל לגמרי איבד את המידע על האובייקט תחת מספר 2, שבעליה לא נמצאה.

אם עברנו את הטבלאות בשאילתא במקומות מסוימים, והיה מתחיל עם «... מאת Realty עזב להצטרף עמים ...» כל נכס אחד, לא היינו אבוד, אתה לא תספר על אנשים.

אבל אל תפחדו של הקשר השמאלי, לעבור מלא חיצוני, אשר נכללים בתוצאות ואת ההתאמה, ולא השורות התואמות.

אחרי הכל, את עוצמת הקול של מדגם לרוב גדולה מאוד, ונתונים נוספים הם למעשה חסרי תועלת. העיקר - כדי להבין מה אתה רוצה להשיג תוצאה: כל האנשים עם רשימה של רכושם הזמין או ברשימת הנכס כולו עם בעלים (אם בכלל).

השמאל להצטרף - את השימוש האופייני שגיאה: בקשה נכונה בעת הגדרת התנאים איפה

השגיאה השנייה קשורה גם אובדן של נתונים, ואינן תמיד מזהה אותה.

בואו נחזור לשאילתא כשעזבנו באמצעות חיבורים קבלו נתונים עבור כל אנשים והרכוש הקיים שלהם. זכור את הדברים הבאים עם השמאל להצטרף למשל SQL:

מעמים LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

נניח שאנחנו רוצים להבהיר את הבקשה אינה פלט הנתונים, בהתחשב באופי החוק - "נכס". אם אנחנו פשוט לצרף, באמצעות עזבנו להצטרף SQL, דוגמא של התנאי הבא:

...

איפה סוג <> "נכס"

נאבדנו את הנתונים על אנשים שאין להם רכוש, משום Null ערך null לא בהשוואה כדלקמן:

Query1

id

L_NAME

F_name

Middle_name

יום הולדת

id_realty

סוג

5

Gerasimovsky

מקווה

פ

1992/03/14

4

חלקים משותפים

6

Gerasimovsky

אולג

Albertovich

1985/01/29

4

חלקים משותפים

7

Sukhanovskaya

חבר השופטים

א

1976/09/25

3

בעלות משותפת סה"כ

8

Sukhanovskaya

ג'וליה

י '

2001/01/10

3

בעלות משותפת סה"כ

כדי למנוע שגיאות התרחשות מסיבה זו, עדיף להגדיר את מצב הבחירה מיד עם החיבור. אנו ממליצים לשקול את הדברים הבאים עם השמאל להצטרף לדוגמא SQL.

עמי SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

מעמים

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples וסוג <> "נכס")

התוצאה תהיה כדלקמן:

Query1

id

L_NAME

F_name

Middle_name

יום הולדת

id_realty

סוג

1

איוונובה

דריה

B.

2000/07/16

2

Pugin

ולדיסלב

ניקולייביץ

1986/01/29

3

Evgenin

אלכסנדר

Federovich

1964/04/30

4

אנין

לאהוב

פ

1989/12/31

5

Gerasimovsky

מקווה

פ

1992/03/14

4

חלקים משותפים

6

Gerasimovsky

אולג

Albertovich

1985/01/29

4

חלקים משותפים

7

Sukhanovskaya

חבר השופטים

א

1976/09/25

3

בעלות משותפת סה"כ

8

Sukhanovskaya

ג'וליה

י '

2001/01/10

3

בעלות משותפת סה"כ

לכן, על ידי ביצוע פשוט שמאלה להצטרף למשל SQL, קיבלנו רשימה של כל האנשים, מתרחקות, אחד ממאפיינים אלה במסגרת הבעלות בהון / משותף.

כמו למסקנה אני רוצה להדגיש שוב כי דגימה כל מידע ממסד הנתונים צריכה להילקח באופן אחראי. ניואנסים רבים פתחו לפנינו עם השמאל להצטרף דוגמה פשוטה SQL, ההסבר של מי מהם - לפני שאתם מתחילים לכתוב שאילתה בסיסית אפילו, אתה חייב בזהירות כדי להבין מה אנחנו רוצים להגיע בסופו של דבר. מזל טוב!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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