أجهزة الكمبيوتر, برمجة
اليسار الانضمام (SQL) - على سبيل المثال، وصفا تفصيليا، واستخدام الخطأ
في أي قاعدة بيانات علائقية حقيقية، يتم توزيع جميع المعلومات عن جدول منفصل. يتم تعيين العديد من الجداول الواردة في خطة التواصل مع بعضهم البعض. ومع ذلك، مع مساعدة من استعلامات SQL فمن الممكن تماما لوضع وصلة بين البيانات، وليس جزءا لا يتجزأ في الدائرة. ويتم ذلك عن طريق إجراء الانضمام الصدد، والذي يسمح لك لبناء علاقة بين أي عدد من الجداول، وحتى ربط المعلومات تبدو متباينة.
هذه المقالة سوف نتحدث تحديدا عن الخارجية اليسرى الانضمام. وقبل الشروع في وصف هذا النوع من الاتصال، إضافة في بعض جداول قاعدة البيانات.
إعداد الجداول اللازمة
على سبيل المثال، في قاعدة البيانات الخاصة بنا، وهناك معلومات عن أشخاص وعقاراتهم. ملخص بناء على الجداول الثلاثة: الشعوب (الناس)، العقارية (العقارية)، Realty_peoples (علاقات الجدول، والناس الذين من ما ممتلكات تعود ل). تحمل البيانات التالية المخزنة في جداول الناس:
الشعوب | ||||
الهوية | L_name | F_name | Middle_name | عيد ميلاد |
1 | ايفانوفا | داريا | B. | 2000/07/16 |
2 | بوجين | فلاديسلاف | نيكولايفيتش | 1986/01/29 |
3 | Evgenin | الكسندر | Federovich | 1964/04/30 |
4 | أنينا | حب | P. | 1989/12/31 |
5 | Gerasimovsky | أمل | P. | 1992/03/14 |
6 | Gerasimovsky | أوليغ | Albertovich | 1985/01/29 |
7 | Sukhanovskaya | هيئة المحلفين | A. | 1976/09/25 |
8 | Sukhanovskaya | جوليا | Y. | 2001/01/10 |
العقارات:
عقار | |
الهوية | عنوان |
1 | أرخانجيلسك، المجاهدين. فورونين، د. 7، kv.6 |
2 | أرخانجيلسك، المجاهدين. Severodvinskaya، د. 84، س. 9 BR. 5 |
3 | منطقة ارخانجيلسك، سيفيرودفينسك، الحادي والعشرين. لينين، د. 134، ف. 85 |
4 | منطقة ارخانجيلسك، نوفودفينسك، المجاهدين. Proletarshaya، د. 16، س. 137 |
5 | أرخانجيلسك، رر. Terekhina، د. 89، س. 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}] |
وتخطيطي على النحو التالي:
وترجم هذا التعبير بأنه "تحديد الكل دون استثناء، خط الجدول ألف والجدول B لعرض فقط الصفوف مطابقة للأصلية. إذا تم العثور على الجدول في جدول سلسلة لأزواج A، ثم ملء الأعمدة مما أدى لاغية - القيم ".
في أغلب الأحيان، عندما يشار اتصال غادر ON، يستخدم فقط باستخدام عندما أسماء الأعمدة، التي تم التخطيط لإجراء الاتصال هي نفسها.
اليسار الانضمام - أمثلة على استخدام
مع اتصال من اليسار يمكننا أن نرى، كل الناس من القائمة إذا كان هناك ممتلكات الشعوب. للقيام بذلك في اليسار الانضمام 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 | ايفانوفا | داريا | B. | 2000/07/16 | ||
2 | بوجين | فلاديسلاف | نيكولايفيتش | 1986/01/29 | ||
3 | Evgenin | الكسندر | Federovich | 1964/04/30 | 5 | ممتلكات |
4 | أنينا | حب | P. | 1989/12/31 | ||
5 | Gerasimovsky | أمل | P. | 1992/03/14 | 4 | الأجزاء المشتركة |
6 | Gerasimovsky | أوليغ | Albertovich | 1985/01/29 | 4 | الأجزاء المشتركة |
7 | Sukhanovskaya | هيئة المحلفين | A. | 1976/09/25 | 1 | ممتلكات |
7 | Sukhanovskaya | هيئة المحلفين | A. | 1976/09/25 | 3 | مجموع ملكية مشتركة |
8 | Sukhanovskaya | جوليا | Y. | 2001/01/10 | 3 | مجموع ملكية مشتركة |
كما نرى، ايفانوفا داريا بوجين فلاديسلاف وAnninoy Lyubovi لا مسجل الحقوق العينية العقارية.
وما تلقيناه، وذلك باستخدام صلة داخلية صلة داخلية؟ كما تعلمون، فإنه يستثني الصفوف غير مطابقة، لذلك ثلاثة من العينة النهائية لدينا ببساطة إسقاط:
Query1 | ||||||
الهوية | L_name | F_name | Middle_name | عيد ميلاد | id_realty | نوع |
3 | Evgenin | الكسندر | Federovich | 1964/04/30 | 5 | ممتلكات |
5 | Gerasimovsky | أمل | P. | 1992/03/14 | 4 | الأجزاء المشتركة |
6 | Gerasimovsky | أوليغ | Albertovich | 1985/01/29 | 4 | الأجزاء المشتركة |
7 | Sukhanovskaya | هيئة المحلفين | A. | 1976/09/25 | 1 | ممتلكات |
7 | Sukhanovskaya | هيئة المحلفين | A. | 1976/09/25 | 3 | مجموع ملكية مشتركة |
8 | Sukhanovskaya | جوليا | Y. | 2001/01/10 | 3 | مجموع ملكية مشتركة |
ويبدو أن النسخة الثانية كما يلبي شروط مشكلتنا. ومع ذلك، إذا بدأنا لنعلق على آخر، وجدول آخر، ثلاثة أشخاص من نتيجة بالفعل ذهب الى غير رجعة. لذلك، من الناحية العملية، عند الجمع بين جداول متعددة أكثر من ذلك بكثير في كثير من الأحيان استخدام اليسار واليمين اتصال من صلة داخلية.
سوف نواصل البحث الى اليسار الانضمام أمثلة SQL. إرفاق جدول مع عناوين بيوتنا:
الشعوب SELECT *، Realty_peoples.id_realty، Realty_peoples.type، Realty.address من الشعوب LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples LEFT JOIN العقارات ON Realty.id = Realty_peoples.id_realty |
ونحن الآن ليس فقط الحصول على نوع من القانون، ولكن أيضا عنوان العقار:
Query1 | |||||||
الهوية | L_name | F_name | Middle_name | عيد ميلاد | id_realty | نوع | عنوان |
1 | ايفانوفا | داريا | B. | 2000/07/16 | |||
2 | بوجين | فلاديسلاف | نيكولايفيتش | 1986/01/29 | |||
3 | Evgenin | الكسندر | Federovich | 1964/04/30 | 5 | ممتلكات | أرخانجيلسك، رر. Terekhina، د. 89، س. 13 |
4 | أنينا | حب | P. | 1989/12/31 | |||
5 | Gerasimovsky | أمل | P. | 1992/03/14 | 4 | الأجزاء المشتركة | منطقة ارخانجيلسك، نوفودفينسك، المجاهدين. Proletarshaya، د. 16، س. 137 |
6 | Gerasimovsky | أوليغ | Albertovich | 1985/01/29 | 4 | الأجزاء المشتركة | منطقة ارخانجيلسك، نوفودفينسك، المجاهدين. Proletarshaya، د. 16، س. 137 |
7 | Sukhanovskaya | هيئة المحلفين | A. | 1976/09/25 | 3 | مجموع ملكية مشتركة | منطقة ارخانجيلسك، سيفيرودفينسك، الحادي والعشرين. لينين، د. 134، ف. 85 |
7 | Sukhanovskaya | هيئة المحلفين | A. | 1976/09/25 | 1 | ممتلكات | أرخانجيلسك، المجاهدين. فورونين، د. 7، kv.6 |
8 | Sukhanovskaya | جوليا | Y. | 2001/01/10 | 3 | مجموع ملكية مشتركة |
منطقة ارخانجيلسك، سيفيرودفينسك، الحادي والعشرين. لينين، د. 134، ف. 85 |
اليسار الانضمام - استخدام نموذجي من الخطأ: جدول الإجراء غير صالح
الأخطاء الأساسية التي قدمت في الخارجية اليسرى الانضمام الجداول، وهما:
- اختيار صحيح ترتيب الجداول التي تم فقدان البيانات.
- حيث الأخطاء عند استخدام استعلام مع ربط الجداول.
النظر في الخطأ الأول. قبل صدور قرار من أي مشكلة ينبغي أن يكون مفهوما بوضوح أن ما نريد أن يحصل في نهاية المطاف. في هذا المثال أعلاه، أخذنا كل واحد من الناس، ولكن فقدت تماما من المعلومات حول الكائن تحت رقم 2، الذي لم يتم العثور على المالك.
إذا انتقلنا الجداول في استعلام في بعض الأماكن، وستبدأ مع «... من العقارات اليسار الانضمام الشعوب ...» أي خاصية واحدة، ونحن لن فقدوا، فلن نقول عن الناس.
ولكن لا يكون خائفا من الاتصال اليسرى، والتحول إلى كامل الخارجية، والتي تم تضمينها في نتيجة والمطابقة، وليس خطوط مطابقة.
بعد كل شيء، حجم العينة غالبا ما تكون كبيرة جدا، وبيانات إضافية لا طائل منه في الواقع. الشيء الرئيسي - لمعرفة ما كنت ترغب في الحصول على نتيجة لذلك: لجميع الناس مع قائمة الممتلكات المتاحة لديها أو قائمة ممتلكات أسرة مع أصحابها (إن وجدت).
اليسار الانضمام - استخدام نموذجي من الخطأ: طلب هو الصحيح عند وضع الشروط في أين
ويرتبط الخطأ الثاني أيضا مع فقدان البيانات، وليست دائما واضحة على الفور.
دعونا نعود إلى الاستعلام عندما غادرنا عبر وصلات البيانات الواردة لجميع الناس والممتلكات الحالية. تذكر ما يلي مع انضمام اليسار المثال SQL:
من الشعوب LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples. |
لنفترض أننا نريد لتوضيح الطلب ولا إخراج البيانات، حيث نوع القانون - "الملكية". إذا نحن ببساطة إلحاق، وذلك باستخدام ترك الانضمام مزود، مثالا على الشرط التالي:
...
حيث نوع <> "الملكية" |
نحن سوف تفقد البيانات الموجودة على الناس الذين ليس لديهم ممتلكات، لأنه لم يتم مقارنة اغية قيمة خالية على النحو التالي:
Query1 | ||||||
الهوية | L_name | F_name | Middle_name | عيد ميلاد | id_realty | نوع |
5 | Gerasimovsky | أمل | P. | 1992/03/14 | 4 | الأجزاء المشتركة |
6 | Gerasimovsky | أوليغ | Albertovich | 1985/01/29 | 4 | الأجزاء المشتركة |
7 | Sukhanovskaya | هيئة المحلفين | A. | 1976/09/25 | 3 | مجموع ملكية مشتركة |
8 | Sukhanovskaya | جوليا | Y. | 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 | ||||||
الهوية | L_name | F_name | Middle_name | عيد ميلاد | id_realty | نوع |
1 | ايفانوفا | داريا | B. | 2000/07/16 | ||
2 | بوجين | فلاديسلاف | نيكولايفيتش | 1986/01/29 | ||
3 | Evgenin | الكسندر | Federovich | 1964/04/30 | ||
4 | أنينا | حب | P. | 1989/12/31 | ||
5 | Gerasimovsky | أمل | P. | 1992/03/14 | 4 | الأجزاء المشتركة |
6 | Gerasimovsky | أوليغ | Albertovich | 1985/01/29 | 4 | الأجزاء المشتركة |
7 | Sukhanovskaya | هيئة المحلفين | A. | 1976/09/25 | 3 | مجموع ملكية مشتركة |
8 | Sukhanovskaya | جوليا | Y. | 2001/01/10 | 3 | مجموع ملكية مشتركة |
وهكذا، وذلك باتباع بسيطة إلى اليسار الانضمام سبيل المثال SQL، تلقينا قائمة بأسماء جميع الناس، والانتقال أبعد من ذلك، واحدة من هذه الخصائص في / الملكية المشتركة الأسهم.
وختاما أود أن أؤكد مرة أخرى أن عينة من أي معلومات من قاعدة البيانات يجب أن تؤخذ بشكل مسؤول. العديد من الفروق الدقيقة فتحت أمامنا مع اليسار الانضمام SQL مثال بسيط، والتفسير واحدة منها - قبل أن تبدأ في الكتابة حتى الاستعلام الأساسي، يجب بعناية لفهم ما نريد أن يحصل في نهاية المطاف. حظا سعيدا!
Similar articles
Trending Now