ᲙომპიუტერებიᲞროგრამირების

Მარცხენა შეუერთდეს (SQL) - მაგალითად, დეტალური აღწერა, გამოყენების შეცდომა

ნებისმიერ რეალური რელატიური მონაცემთა ბაზა, ყველა ინფორმაცია ნაწილდება ცალკე მაგიდასთან. ბევრი მაგიდები დადგენილი კომუნიკაციის სქემა ერთმანეთს. თუმცა, დახმარებით SQL შეკითხვებს ის არის გამორიცხული, რომ დააყენა ბმული მონაცემებს შორის, არ არის ჩართული ჩართვა. ეს კეთდება მიერ ასრულებენ შეუერთდეს კავშირი, რომელიც საშუალებას გაძლევთ აშენება ურთიერთობას ნებისმიერი რაოდენობის მაგიდები, და კიდევ აკავშირებს ერთი შეხედვით განსხვავებული ინფორმაცია.

ეს სტატია გაიგო კონკრეტულად მარცხენა გარე შეუერთდება. გაგრძელებამდე აღწერა ამ ტიპის კავშირი, დაამატოთ ზოგიერთი მონაცემთა ბაზის ცხრილები.

მომზადება აუცილებელი მაგიდები

მაგალითად, ჩვენს მონაცემთა ბაზაში არ არის ინფორმაცია ადამიანები და მათი ქონების. რეზიუმე საფუძველზე სამი მაგიდები: ხალხი (ადამიანი), Realty (უძრავი ქონების), Realty_peoples (მაგიდის ურთიერთობების, ადამიანები, რომლებიც რა ქონება ეკუთვნის). ვივარაუდოთ შემდეგი მონაცემები ინახება მაგიდები ხალხს:

ხალხი

id

L_name

F_name

Middle_name

დაბადების დღე

1

Ivanova

Daria

07/16/2000

2

Pugin

ვლადისლავ

ნიკოლოზის

29.01.1986

3

Evgenin

ალექსანდრე

Federovich

04/30/1964

4

Annina

მიყვარს

P.

31.12.1989

5

Gerasimovsky

იმედი მაქვს,

P.

14.03.1992

6

Gerasimovsky

oleg

Albertovich

01/29/1985

7

Sukhanovskaya

ჟიურის

09/25/1976

8

Sukhanovskaya

Julia

Y.

01.10.2001

უძრავი ქონების:

Realty

id

მისამართი

1

არხანგელსკში, ul. ვორონინი, დ. 7, kv.6

2

არხანგელსკში, ul. Severodvinskaya, დ. 84, ქ. 9 BR. 5

3

არხანგელსკში რეგიონში, Severodvinsk, ქ. ლენინის, დ. 134, ქ. 85

4

არხანგელსკში რეგიონში, Novodvinsk, ul. Proletarshaya, დ. 16 ქ. 137

5

არხანგელსკის, pl. 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 არიან მხოლოდ შესაბამისი რიგები, ძირითადი. თუ მაგიდა იპოვეს string მაგიდა წყვილი A, მაშინ შეავსოთ შედეგად სვეტები 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

Ivanova

Daria

07/16/2000

2

Pugin

ვლადისლავ

ნიკოლოზის

29.01.1986

3

Evgenin

ალექსანდრე

Federovich

04/30/1964

5

ქონება

4

Annina

მიყვარს

P.

31.12.1989

5

Gerasimovsky

იმედი მაქვს,

P.

14.03.1992

4

საერთო ნაწილები

6

Gerasimovsky

oleg

Albertovich

01/29/1985

4

საერთო ნაწილები

7

Sukhanovskaya

ჟიურის

09/25/1976

1

ქონება

7

Sukhanovskaya

ჟიურის

09/25/1976

3

სულ თანამფლობელობა

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

სულ თანამფლობელობა

როგორც ვხედავთ, Ivanova დარია Pugin ვლადისლავ და Anninoy Lyubovi არ არის რეგისტრირებული უძრავი ქონების უფლებები.

და რა მივიღეთ, გამოყენებით შიდა შეუერთდეს Inner გავწევრიანდე როგორც მოგეხსენებათ, იგი გამორიცხავს არასამთავრობო შესაბამისი რიგები, ასე სამი ჩვენი საბოლოო ნიმუში უბრალოდ უნდა დაეცა:

Query1

id

L_name

F_name

Middle_name

დაბადების დღე

id_realty

ტიპი

3

Evgenin

ალექსანდრე

Federovich

04/30/1964

5

ქონება

5

Gerasimovsky

იმედი მაქვს,

P.

14.03.1992

4

საერთო ნაწილები

6

Gerasimovsky

oleg

Albertovich

01/29/1985

4

საერთო ნაწილები

7

Sukhanovskaya

ჟიურის

09/25/1976

1

ქონება

7

Sukhanovskaya

ჟიურის

09/25/1976

3

სულ თანამფლობელობა

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

სულ თანამფლობელობა

როგორც ჩანს, რომ მეორე ვერსია ასევე აკმაყოფილებს პირობებს ჩვენი პრობლემა. თუმცა, თუ ჩვენ ვიწყებთ ანიჭებენ სხვა და სხვა მაგიდასთან, სამი ადამიანი შედეგი უკვე irretrievably წავიდა. აქედან გამომდინარე, პრაქტიკაში, როდესაც აერთიანებს სხვადასხვა მაგიდები უფრო ხშირად გამოიყენება მარცხენა და მარჯვენა კავშირი, ვიდრე შიდა შეუერთდება.

გავაგრძელებთ მარცხნივ შეუერთდეს 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

Ivanova

Daria

07/16/2000

2

Pugin

ვლადისლავ

ნიკოლოზის

29.01.1986

3

Evgenin

ალექსანდრე

Federovich

04/30/1964

5

ქონება

არხანგელსკის, pl. Terekhina, დ. 89, ქ. 13

4

Annina

მიყვარს

P.

31.12.1989

5

Gerasimovsky

იმედი მაქვს,

P.

14.03.1992

4

საერთო ნაწილები

არხანგელსკში რეგიონში, Novodvinsk, ul. Proletarshaya, დ. 16 ქ. 137

6

Gerasimovsky

oleg

Albertovich

01/29/1985

4

საერთო ნაწილები

არხანგელსკში რეგიონში, Novodvinsk, ul. Proletarshaya, დ. 16 ქ. 137

7

Sukhanovskaya

ჟიურის

09/25/1976

3

სულ თანამფლობელობა

არხანგელსკში რეგიონში, Severodvinsk, ქ. ლენინის, დ. 134, ქ. 85

7

Sukhanovskaya

ჟიურის

09/25/1976

1

ქონება

არხანგელსკში, ul. ვორონინი, დ. 7, kv.6

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

სულ თანამფლობელობა

არხანგელსკის რეგიონი, სევეროდვივსკი, ul. ლენინა, დ. 134, გვ. 85

მარცხნივ შეუერთდება - ტიპიური გამოყენების შეცდომები: არასწორი წესრიგი მაგიდები

ძირითადი შეცდომები, რომლებიც დაშვებულია მაგიდის მარცხენა მხარესთან, არის ორი:

  1. არასწორად შერჩეული ცხრილების შეკვეთა, რის შედეგადაც მონაცემები დაიკარგა.
  2. შეცდომები როდესაც იყენებთ შეკითხვაზე შერწყმული მაგიდები.

განვიხილოთ პირველი შეცდომა. პრობლემის მოგვარებამდე აუცილებელია ნათლად გავიგოთ, რის შედეგადაც ჩვენ გვსურს. ზემოთ მოყვანილ მაგალითში გამოვიყვანეთ ყველა ადამიანი, მაგრამ აბსოლუტურად დაკარგა ინფორმაცია ობიექტის შესახებ 2-ის ფარგლებში, საიდანაც მფლობელი არ იყო ნაპოვნი.

თუ მაგიდები გადავედით შეკითხვების ადგილებზე და დავიწყეთ "... რეალითიდან გაწევრიანდნენ სახალხო ..." მაშინ არ დავკარგავთ ერთ ქონებას, რომელიც ვერ იტყვის ხალხის შესახებ.

თუმცა, არ უნდა იყოს შეშინებული მარცხენა კავშირი, წასვლა სრული გარე, რომელიც მოიცავს შედეგად, და ემთხვევა, და არ ემთხვევა ხაზი.

ყოველივე ამის შემდეგ, თანხის ნიმუშები ხშირად ძალიან დიდია, და დამატებითი მონაცემები ნამდვილად არ სჭირდება არაფერი. მთავარი ისაა, რომ გავიგოთ, რის შედეგადაც გსურთ მიიღოთ მონაწილეობა: ყველა ადამიანები, რომლებიც ხელმისაწვდომია უძრავი ქონების სიაში, ან უძრავი ქონების ჩამონათვალი მათი მფლობელებით (ასეთის არსებობის შემთხვევაში).

მარცხნივ შეუერთდება - ტიპიური გამოყენების შეცდომები: შეკითხვის სისწორე როდესაც პირობების შექმნისას სად

მეორე შეცდომა ასევე უკავშირდება მონაცემების დაკარგვას და ყოველთვის არ არის ნათელი.

მოდით დავუბრუნდეთ შეკითხვას, როდესაც ჩვენ ვიყენებთ მარცხენა კავშირი მიიღო მონაცემები ყველა ადამიანს და მათ არსებულ უძრავი ქონებაზე. გაითვალისწინეთ შემდეგი მარცხნივ:

სახალხო ფრონტიდან შემოსვლა Realty_peoples Peoples.id = Realty_peoples.id_appeoples;

დავუშვათ, რომ გვინდა დახვეწოს შეკითხვა და არა გამომავალი მონაცემები, სადაც კანონის ტიპია "საკუთრება". თუ ჩვენ უბრალოდ დავამატებთ, მივყავართ მარცხენა შემოგვიერთდით sql- ს, მაგალითად შემდეგი პირობით:

...

სადაც ტიპი <> "საკუთრება"

ჩვენ დავკარგავთ მონაცემებს იმ ადამიანებზე, რომლებსაც არ აქვთ უძრავი ქონება, რადგან Null- ის ცარიელი ღირებულება არ შეესაბამება ამ გზას:

მოთხოვნა 1

Id

L_name

F_name

შუა სახელი

დაბადების დღე

Id_realty

ტიპი

5

გერასიმოვსკაია

იმედი მაქვს

პავლოვნა

03/14/1992

4

საერთო საკუთრება

მე -6

გერასიმოვსკი

ოლეგ

ალბერტოვიჩი

01/29/1985

4

საერთო საკუთრება

მე -7

სუხანოვსკი

იური

ანდრივიჩი

09/25/1976

3

საერთო ერთობლივი საკუთრება

მე -8

სუკანოვსკაია

იულია

იურიევნა

10/01/2001

3

საერთო ერთობლივი საკუთრება

ამ მიზეზით შეცდომების თავიდან აცილების მიზნით, საუკეთესოა შერჩევის პირობების დაზუსტება კავშირი. ჩვენ ვთვლით, რომ გაითვალისწინოთ შემდეგი მაგალითი:

აირჩიეთ ხალხები *, Realty_peoples.id_realty, Realty_peoples.type

ხალხიდან

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_appeaches და ტიპის <> "ქონების")

შედეგი ასეთია:

მოთხოვნა 1

Id

L_name

F_name

შუა სახელი

დაბადების დღე

Id_realty

ტიპი

1

ივანოვა

დარია

ბორისოვნა

16.07.2000

2

პეგინი

ვლადისლავ

ნიკოლაევიჩი

01/29/1986

3

ევგენიინი

ალექსანდრე

Fedorovich

04/30/1964

4

ანინა

სიყვარული

პავლოვნა

12/31/1989

5

გერასიმოვსკაია

იმედი მაქვს

პავლოვნა

03/14/1992

4

საერთო საკუთრება

მე -6

გერასიმოვსკი

ოლეგ

ალბერტოვიჩი

01/29/1985

4

საერთო საკუთრება

მე -7

სუხანოვსკი

იური

ანდრივიჩი

09/25/1976

3

საერთო ერთობლივი საკუთრება

მე -8

სუკანოვსკაია

იულია

იურიევნა

10/01/2001

3

საერთო ერთობლივი საკუთრება

ამრიგად, უბრალო მაგალითის გაკეთებით, მარცხნივ შემოგვიერთდით, ჩვენ ყველა ადამიანთა სიას მივიღეთ, დამატებით ჩამოყალიბება, რომელთაგან ერთეულია უძრავი ქონება საერთო / საერთო საკუთრებაში.

როგორც დასკვნა მინდა კიდევ ერთხელ ხაზგასმით აღვნიშნო, რომ აუცილებელია მონაცემთა ბაზის ნებისმიერი ინფორმაციის შერჩევაში პასუხისმგებლობა. ბევრი ნიუანსი გაიხსნა ჩვენთან ერთად მარცხენა შემოგვიერთდით SQL მარტივი მაგალითის გამოყენებით, რომლის განმარტებაც ერთია - სანამ დაიწყება ელემენტარული შეკითხვაც კი, ჩვენ უნდა გვესმოდეს, რა ზუსტად უნდა გვინდა. გისურვებთ წარმატებას!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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