کامپیوتربرنامه نویسی

چپ ملحق (SQL) - به عنوان مثال، شرح مفصل، استفاده از خطا

در هر پایگاه داده واقعی رابطه ای، تمام اطلاعات بر روی یک جدول جداگانه توزیع شده است. بسیاری از جداول مندرج در طرح ارتباط با یکدیگر تنظیم شده است. با این حال، با کمک SQL نمایش داده شد کاملا ممکن است برای قرار دادن لینک بین داده ها، در مدار تعبیه شده است. این است که با انجام یک اتصال پیوستن به، که اجازه می دهد تا شما را به ایجاد یک رابطه بین هر تعداد از جداول، و حتی اتصال اطلاعات به ظاهر متفاوت انجام می شود.

این مقاله به طور خاص در مورد بیرونی سمت چپ ملحق صحبت خواهد کرد. قبل از اقدام به شرح این نوع اتصال، اضافه کردن در برخی از جداول پایگاه داده.

آماده سازی جداول لازم

به عنوان مثال، در بانک اطلاعاتی ما، اطلاعات در مورد مردم و املاک و مستغلات آنها وجود دارد. مردم (مردم)، ملک (املاک و مستغلات)، Realty_peoples (روابط جدول، افرادی که از آنچه از اموال متعلق به): خلاصه در سه جدول است. فرض کنید داده های زیر ذخیره شده در جداول از مردم:

مردم

شناسایی

L_name

F_name

Middle_name

جشن تولد

1

ایوانوا

داریوش

ب

2000/07/16

2

Pugin

ولادیسلاو

نیکلایویچ

1986/01/29

3

Evgenin

الکساندر

Federovich

1964/04/30

4

Annina

عشق

ص

1989/12/31

5

Gerasimovsky

امید

ص

1992/03/14

6

Gerasimovsky

اولگ

Albertovich شرکت

1985/01/29

7

Sukhanovskaya

هيئت منصفه

A.

1976/09/25

8

Sukhanovskaya

جولیا

Y.

2001/01/10

املاک و مستغلات:

دارایی غیر منقول

شناسایی

نشانی

1

آرخانگلسک، UL. ورونین، د. 7، kv.6

2

آرخانگلسک، UL. Severodvinskaya، د. 84، س. 9 BR. 5

3

آرخانگلسک منطقه، سورودوینسک، ST. لنین، د. 134، س. 85

4

آرخانگلسک منطقه، نووودوینسک، UL. 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

قطعات مشترک

LEFT JOIN (SQL) - توضیحات

ترکیب را ترک کرده است از دستور زیر:

Table_A LEFT JOIN table_B [{بر گزاره} | {با استفاده از spisok_ با tolbtsov}]

و شماتیک شرح زیر است:

و این عبارت به عنوان "انتخاب همه، بدون استثنا، خط جدول A و B جدول برای نمایش تنها ردیف تطبیق از گزاره ترجمه شده است. اگر جدول در جدول رشته برای جفت پیدا شد، و سپس پر کردن ستون نتیجه صفر - ارزش ".

در اغلب موارد، زمانی که اتصال چپ نشان داده شده است، با استفاده از استفاده می شود تنها زمانی که نام ستون، است که به منظور ایجاد اتصال یکسان هستند.

چپ پیوستن به - نمونه هایی از استفاده

با اتصال از سمت چپ ما می توانید ببینید، همه مردم را از لیست اگر مردم اموال وجود دارد. برای این کار در سمت چپ ملحق مثال پرس و جوی sql:

مردم را انتخاب کنید. *، 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

ایوانوا

داریوش

ب

2000/07/16

2

Pugin

ولادیسلاو

نیکلایویچ

1986/01/29

3

Evgenin

الکساندر

Federovich

1964/04/30

5

خاصیت

4

Annina

عشق

ص

1989/12/31

5

Gerasimovsky

امید

ص

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

مالکیت مشترک مجموع

همانطور که می بینیم، ایوانوا دریا Pugin ولادیسلاو و Anninoy Lyubovi بدون ثبت نام حقوق املاک و مستغلات.

و آنچه را که ما دریافت کرده اند، با استفاده از یک INNER JOIN INNER JOIN؟ همانطور که می دانید، آن را مانع ردیف غیر تطبیق، به طوری که سه نفر از نمونه نهایی ما به سادگی می شود کاهش یافته است:

Query1

شناسایی

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

هيئت منصفه

A.

1976/09/25

1

خاصیت

7

Sukhanovskaya

هيئت منصفه

A.

1976/09/25

3

مالکیت مشترک مجموع

8

Sukhanovskaya

جولیا

Y.

2001/01/10

3

مالکیت مشترک مجموع

به نظر می رسد که نسخه دوم همچنین در دیدار با شرایط مشکل ما است. با این حال، اگر ما شروع به ضمیمه در یکی دیگر از، و جدول دیگری، سه نفر از نتیجه در حال حاضر غیر قابل برگشتی رفته است. چپ و راست اتصال بنابراین، در عمل، زمانی که ترکیب جداول چندگانه بسیار بیشتر استفاده از داخلی بپیوندند.

ادامه خواهد داد تا نگاهی به سمت چپ نمونه SQL بپیوندید. ضمیمه یک جدول با آدرس خانه ما:

مردم را انتخاب کنید. *، Realty_peoples.id_realty، Realty_peoples.type، Realty.address

از مردمان

LEFT JOIN Realty_peoples بر Peoples.id = Realty_peoples.id_peoples

LEFT JOIN دارایی غیر منقول در Realty.id = Realty_peoples.id_realty

در حال حاضر ما نه تنها یک نوع قانون، بلکه آدرس املاک و مستغلات:

Query1

شناسایی

L_name

F_name

Middle_name

جشن تولد

id_realty

نوع

نشانی

1

ایوانوا

داریوش

ب

2000/07/16

2

Pugin

ولادیسلاو

نیکلایویچ

1986/01/29

3

Evgenin

الکساندر

Federovich

1964/04/30

5

خاصیت

آرخانگلسک، و پلاست. Terekhina، د. 89، س. 13

4

Annina

عشق

ص

1989/12/31

5

Gerasimovsky

امید

ص

1992/03/14

4

قطعات مشترک

آرخانگلسک منطقه، نووودوینسک، UL. Proletarshaya، د. 16، س. 137

6

Gerasimovsky

اولگ

Albertovich شرکت

1985/01/29

4

قطعات مشترک

آرخانگلسک منطقه، نووودوینسک، UL. Proletarshaya، د. 16، س. 137

7

Sukhanovskaya

هيئت منصفه

A.

1976/09/25

3

مالکیت مشترک مجموع

آرخانگلسک منطقه، سورودوینسک، ST. لنین، د. 134، س. 85

7

Sukhanovskaya

هيئت منصفه

A.

1976/09/25

1

خاصیت

آرخانگلسک، UL. ورونین، د. 7، kv.6

8

Sukhanovskaya

جولیا

Y.

2001/01/10

3

مالکیت مشترک مجموع

آرخانگلسک منطقه، سورودوینسک، ST. لنین، د. 134، س. 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

امید

ص

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.

مردم را انتخاب کنید. *، 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

ایوانوا

داریوش

ب

2000/07/16

2

Pugin

ولادیسلاو

نیکلایویچ

1986/01/29

3

Evgenin

الکساندر

Federovich

1964/04/30

4

Annina

عشق

ص

1989/12/31

5

Gerasimovsky

امید

ص

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

 

 

 

 

Newest

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