КомпютриПрограмиране

Ляво присъединят (SQL) - пример, подробното описание, използването на грешката

Във всеки недвижими релационна база данни, цялата информация се разпространява по отделна таблица. Много от таблиците са изложени в схемата за комуникация помежду си. Въпреки това, с помощта на Sql заявки че е напълно възможно да се постави връзка между данните, които не са вградени във веригата. Това се прави чрез извършване на присъединят връзка, която ви позволява да се изгради връзка между произволен брой маси и дори се свържете привидно различни информация.

В тази статия ще говорим конкретно за лявата външна присъединят. Преди да се пристъпи към описанието на този тип връзка, добавете в някои таблиците в базата данни.

Подготовка на необходимите таблици

Например, в нашата база данни има информация за хора и техните недвижими имоти. Обобщение на базата на трите таблици: народите (хора), Realty (недвижими имоти), Realty_peoples (трапезни взаимоотношения, хората, които от какво имущество принадлежи). Да приемем, следната информация, съхранена в таблиците на хората:

Peoples

идентификатор

L_name

F_name

Middle_name

рожден ден

1

Иванова

Дария

Б.

07.16.2000

2

Pugin

Владислав

Николаевич

01.29.1986

3

Evgenin

Александър

Federovich

04.30.1964

4

Анина

обичам

P.

12.31.1989

5

Gerasimovsky

надявам се

P.

03.14.1992

6

Gerasimovsky

Олег

Albertovich

01.29.1985

7

Sukhanovskaya

жури

А.

09.25.1976

8

Sukhanovskaya

Джулия

Y.

01.10.2001

За недвижими имоти:

недвижими имоти

идентификатор

адрес

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 НАЛЯВО УЧАСТВА table_B [{ON предикат} | {ИЗПОЛЗВАНЕ spisok_ с tolbtsov}]

И схематично, както следва:

А това се превежда като "Избиране на всички, без изключение, ред на таблица А и таблица В, за да покажете само съвпадащите редовете на предиката. Ако не са открити на масата в таблицата с низ за двойки А, след това попълнете получените колоните Null - ценности ".

Най-често, когато напусна връзката е посочено ON, като се използва се използва само, когато имената на колоните, които се планира да се направи връзката са едни и същи.

Ляв присъединят - примери за използване

С присъединяването на ляво можем да видим, всички хора от списъка, ако има население собственост. За да направите това в ляво се присъединят към SQL например заявка:

SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

ОТ Peoples НАЛЯВО JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Със следните резултати:

Query1

идентификатор

L_name

F_name

Middle_name

рожден ден

id_realty

тип

1

Иванова

Дария

Б.

07.16.2000

2

Pugin

Владислав

Николаевич

01.29.1986

3

Evgenin

Александър

Federovich

04.30.1964

5

имот

4

Анина

обичам

P.

12.31.1989

5

Gerasimovsky

надявам се

P.

03.14.1992

4

Общи части

6

Gerasimovsky

Олег

Albertovich

01.29.1985

4

Общи части

7

Sukhanovskaya

жури

А.

09.25.1976

1

имот

7

Sukhanovskaya

жури

А.

09.25.1976

3

Общо съсобственост

8

Sukhanovskaya

Джулия

Y.

01.10.2001

3

Общо съсобственост

Както се вижда, Иванова Даря Pugin Владислав и Anninoy Lyubovi Не регистриран права на недвижими имоти.

И какво ще сме получили, като се използва вътрешна присъединят Вътрешна присъединя? Както знаете, той изключва несъвпадащи редове, така че три от нашата крайна проба просто щеше да отпадне:

Query1

идентификатор

L_name

F_name

Middle_name

рожден ден

id_realty

тип

3

Evgenin

Александър

Federovich

04.30.1964

5

имот

5

Gerasimovsky

надявам се

P.

03.14.1992

4

Общи части

6

Gerasimovsky

Олег

Albertovich

01.29.1985

4

Общи части

7

Sukhanovskaya

жури

А.

09.25.1976

1

имот

7

Sukhanovskaya

жури

А.

09.25.1976

3

Общо съсобственост

8

Sukhanovskaya

Джулия

Y.

01.10.2001

3

Общо съсобственост

Тя ще изглежда, че втората версия също отговаря на условията на нашия проблем. Въпреки това, ако ние започваме да прикачите на друг, а друга маса, трима души от резултата вече безвъзвратно отминали. Поради това, на практика, когато се комбинират множество таблици много по-често се използва ляв и десен от Inner присъединят.

Ще продължи да се търси в ляво се присъединят към SQL примери. Прикрепете маса с адресите на къщите си:

SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

ОТ Peoples

НАЛЯВО JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

НАЛЯВО JOIN Realty ON Realty.id = Realty_peoples.id_realty

Сега ние получаваме не само един вид право, но също така и на адреса на недвижими имоти:

Query1

идентификатор

L_name

F_name

Middle_name

рожден ден

id_realty

тип

адрес

1

Иванова

Дария

Б.

07.16.2000

2

Pugin

Владислав

Николаевич

01.29.1986

3

Evgenin

Александър

Federovich

04.30.1964

5

имот

Архангелск, пл. Terekhina, д. 89, р. 13

4

Анина

обичам

P.

12.31.1989

5

Gerasimovsky

надявам се

P.

03.14.1992

4

Общи части

област Архангелск, Новодвинск, ул. Proletarshaya, д. 16, р. 137

6

Gerasimovsky

Олег

Albertovich

01.29.1985

4

Общи части

област Архангелск, Новодвинск, ул. Proletarshaya, д. 16, р. 137

7

Sukhanovskaya

жури

А.

09.25.1976

3

Общо съсобственост

област Архангелск, Северодвинск, бр. Ленин, д. 134, р. 85

7

Sukhanovskaya

жури

А.

09.25.1976

1

имот

Архангелск, ул. Воронин, г. 7, kv.6

8

Sukhanovskaya

Джулия

Y.

01.10.2001

3

Общо съсобственост

област Архангелск, Северодвинск, бр. Ленин, д. 134, р. 85

Ляв присъединят - типичната употреба на грешка: невалиден маса процедура

Основни грешки, допуснати в лявата външна присъединят маси, две:

  1. Правилно избран от порядъка на маси, за които е загубен данни.
  2. Къде грешки, когато с помощта на заявка с присъединят таблици.

Помислете първо грешка. Преди решението на всеки проблем, трябва да бъдат ясно разбира, че това, което искаме да се получи в крайна сметка. В този пример по-горе, ние взехме всеки един от хората, но загубила напълно информацията за обекта под номер 2, чийто собственик не е намерен.

Ако ние се премества в таблиците на заявка на някои места, и ще започне с «... От Realty ляво се присъединят Peoples ...» всеки един имот, не бихме загубили, няма да кажа за хората.

Но не се плаши от лявата връзка, преминете към пълен външен, който е включен в резултатите и съвпадение, а не съответстващи редове.

В крайна сметка, на обема на извадката често е много голям, а допълнително данни практически безполезно. Основното нещо - да разбера какво искате да получите резултат: на всички хора със списък на разположение тяхното имущество или целия списък имот с техните собственици (ако има такива).

Ляв присъединят - типичната употреба на грешка: Искане е правилно при определяне на условията в Къде

Втората грешка е свързана и с загуба на данни, и не винаги са непосредствено очевидна.

Да се върнем към заявката, когато напуснахме чрез връзки, получени данни за всички хора и тяхното съществуващо имота. Не забравяйте следното с лявата присъединят SQL пример:

ОТ Peoples НАЛЯВО JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Да предположим, че искаме да се изясни искането и не извежда данните, когато видът на закона - "собственост". Ако ние просто прибавяте с лявата се присъединят към SQL, пример за следното условие:

...

Къде тип <> "собственост"

ще загубим данните за хора, които нямат собственост, защото нулевата нулевата стойност не е сравнение, както следва:

Query1

идентификатор

L_name

F_name

Middle_name

рожден ден

id_realty

тип

5

Gerasimovsky

надявам се

P.

03.14.1992

4

Общи части

6

Gerasimovsky

Олег

Albertovich

01.29.1985

4

Общи части

7

Sukhanovskaya

жури

А.

09.25.1976

3

Общо съсобственост

8

Sukhanovskaya

Джулия

Y.

01.10.2001

3

Общо съсобственост

За да се предотврати възникването на грешки поради тази причина, най-добре е да се определят условията за избор веднага след връзката. Ние предлагаме да се има предвид следното с ляво се присъединят към SQL пример.

SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

ОТ Peoples

НАЛЯВО JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples и тип <> "собственост")

Резултатът ще бъде, както следва:

Query1

идентификатор

L_name

F_name

Middle_name

рожден ден

id_realty

тип

1

Иванова

Дария

Б.

07.16.2000

2

Pugin

Владислав

Николаевич

01.29.1986

3

Evgenin

Александър

Federovich

04.30.1964

4

Анина

обичам

P.

12.31.1989

5

Gerasimovsky

надявам се

P.

03.14.1992

4

Общи части

6

Gerasimovsky

Олег

Albertovich

01.29.1985

4

Общи части

7

Sukhanovskaya

жури

А.

09.25.1976

3

Общо съсобственост

8

Sukhanovskaya

Джулия

Y.

01.10.2001

3

Общо съсобственост

По този начин, като следвате простите на ляво се присъединят към SQL пример, ние получихме списък на всички хора, движещи се по-нататък, един от тези имоти в собствения капитал / съсобственост.

В заключение бих искал още веднъж, че проба от всяка информация от базата данни трябва да се вземат отговорно да се подчертае. Много нюанси отвориха пред нас с лявата присъединят SQL прост пример, обяснението на които един - преди да започнете да пишете дори обикновена заявка, трябва внимателно да се разбере това, което искаме да се получи в крайна сметка. На добър час!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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