מחשבים, תכנות
שמאל להצטרף (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 |
השמאל להצטרף - את השימוש האופייני שגיאה: שולחן הליך חוקי
טעויות בסיסיות שנעשו החיצוני השמאלי להצטרף שולחנות, שני:
- כראוי שנבחר סדר השולחנות עבורו נתונים אבדו.
- איפה שגיאות בעת שימוש בשאילתא להצטרף שולחנות.
קח טעות ראשונה. לפני החלטת שום בעיה יש להבין בבירור כי מה שאנחנו רוצים להשיג בסופו של דבר. בדוגמה זו לעיל, לקחנו כל אחד ואחד העם, אבל לגמרי איבד את המידע על האובייקט תחת מספר 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