Компјутери, Програмирање
Лево се приклучат (SQL) - на пример, детален опис, употреба на грешка
Во секој вистински релациона база на податоци, сите информации се дистрибуира на посебна табела. Многу од табелите се дадени во програмата на комуникација едни со други. Сепак, со помош на SQL queries тоа е сосема можно да се стави линк помеѓу податоците, не се вметнати во коло. Ова се прави со извршување на приклучат врска, кој ви овозможува да се изгради однос помеѓу било кој број на маси, и дури да се поврзете навидум различни информации.
Оваа статија ќе зборуваме конкретно за лево надворешниот се придружи. Пред да започнете со опис на овој тип на врска, додадете ги во некоја база на податоци маси.
Подготовка на потребните табели
На пример, во нашата база на податоци, има информации за луѓе и нивните недвижности. Краток преглед врз основа на три маси: Народи (луѓе), Имотот (недвижности), Realty_peoples (табела односи, од луѓе кои што имотот припаѓа). Ги преземе следните податоци се чуваат во масите на луѓе:
народи | ||||
id | L_name | F_name | Middle_name | роденден |
1 | Иванова | Дарија |
Б. | 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 | жирито | А. | 1976/09/25 |
8 | Sukhanovskaya | Јулија | Y. | 2001/01/10 |
Недвижен имот:
Имотот | |
id | адреса |
1 | Архангелск, ул. Воронин, d. 7, kv.6 |
2 | Архангелск, ул. Severodvinskaya, d. 84, q. 9 BR. 5 |
3 | регионот Архангелск, Северодвинск, ул. Ленин, d. 134, q. 85 |
4 | регионот Архангелск, Novodvinsk, ул. Proletarshaya, d. 16, q. 137 |
5 | Архангелск, ул. Terekhina, d. 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 [{ЗА предикат} | {КОРИСТЕЊЕ spisok_ со tolbtsov}] |
И шематски како што следува:
И овој израз е преведен како "Избери ги сите, без исклучок, линија на Табела А и Б на маса да ги прикажува само на појавување на редови на прирокот. Ако е пронајден на табелата во табелата на низа за парови А, потоа се пополни како резултат колони Нулев - вредности ".
Најчесто, кога левата конекција е означена и користење се користи само кога колоната имиња, кој се планира да се направи врска се исти.
Лево се приклучат - примери на употреба
Со поврзувањето на левата страна можеме да видиме, сите луѓе од листата ако има народи сопственост. Да го направите ова во левата приклучат SQL пример за пребарување:
Избери народи. *, Realty_peoples.id_realty, Realty_peoples.type ОД народи LEFT JOIN Realty_peoples ЗА Peoples.id = Realty_peoples.id_peoples; |
Со следните резултати:
Query1 | ||||||
id | L_name | F_name | Middle_name | роденден | id_realty | тип |
1 | Иванова | Дарија | Б. | 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 | жирито | А. | 1976/09/25 | 1 | сопственост |
7 | Sukhanovskaya | жирито | А. | 1976/09/25 | 3 | Вкупно заедничка сопственост |
8 | Sukhanovskaya | Јулија | Y. | 2001/01/10 | 3 | Вкупно заедничка сопственост |
Како што гледаме, Иванова Дарја Пуџин Владислав и Anninoy Lyubovi Не запишаните права на недвижностите.
А што ќе се примени, со користење на внатрешниот приклучат Внатрешна приклучат? Како што знаете, тоа ги исклучува не-појавување на редови, па три од нашите конечниот примерок едноставно ќе се намали:
Query1 | ||||||
id | 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 | жирито | А. | 1976/09/25 | 1 | сопственост |
7 | Sukhanovskaya | жирито | А. | 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 | |||||||
id | L_name | F_name | Middle_name | роденден | id_realty | тип | адреса |
1 | Иванова | Дарија | Б. | 2000/07/16 | |||
2 | Пуџин | Владислав | Николаевич | 1986/01/29 | |||
3 | Evgenin | Александар | Federovich | 1964/04/30 | 5 | сопственост | Архангелск, ул. Terekhina, d. 89, q. 13 |
4 | Анина | љубов | P. | 1989/12/31 | |||
5 | Gerasimovsky | се надевам | P. | 1992/03/14 | 4 | заедничките делови | регионот Архангелск, Novodvinsk, ул. Proletarshaya, d. 16, q. 137 |
6 | Gerasimovsky | Олег | Albertovich | 1985/01/29 | 4 | заедничките делови | регионот Архангелск, Novodvinsk, ул. Proletarshaya, d. 16, q. 137 |
7 | Sukhanovskaya | жирито | А. | 1976/09/25 | 3 | Вкупно заедничка сопственост | регионот Архангелск, Северодвинск, ул. Ленин, d. 134, q. 85 |
7 | Sukhanovskaya | жирито | А. | 1976/09/25 | 1 | сопственост | Архангелск, ул. Воронин, d. 7, kv.6 |
8 | Sukhanovskaya | Јулија | Y. | 2001/01/10 | 3 | Вкупно заедничка сопственост |
регионот Архангелск, Северодвинск, ул. Ленин, d. 134, q. 85 |
Лево се приклучат - типичен употреба на грешка: неважечки маса постапка
Основни грешки направени на левата надворешниот приклучат маси, две:
- Правилно избрани од редот на маси за кој е на изгубени податоци.
- Каде грешки кога се користи пребарување со приклучат маси.
Размислете за прв грешка. Пред одлуката на било каков проблем треба јасно да се разбере дека она што сакате да го добиете на крајот. Во овој пример погоре, ние ја секој еден од луѓето, туку целосно ја загуби информации за објектот под број 2, чиј сопственик не е пронајден.
Ако ние се пресели на маси во барањето на некои места, а ќе започне со "... Од Имотот лево приклучат народи ...» било еден имот, ние не би ја изгубиле, нема да кажам за луѓето.
Но, не се плашат од левата конекција, се префрлат на целосна надворешна, која е вклучена во резултатите и за појавување на, а не на редовите што се совпаѓаат.
Впрочем, обемот на примерокот е често многу голема, и дополнителни податоци е всушност бескорисни. Главната работа - да дознаам што сакате да се добие резултат: на сите луѓе со листа на располагање на нивниот имот или целата листа сопственост со нивните сопственици (доколку постојат).
Лево се приклучат - типичен употреба на грешка: Барање е точно, при утврдувањето на условите во случај кога
Втората грешка е исто така поврзан со губење на податоци, како и секогаш не се веднаш видливи.
Да се вратиме на прашањето кога тргнавме преку врски добиените податоци за сите луѓе и нивните постоечки имот. Се сеќавам на следново со левата се приклучат SQL пример:
ОД народи LEFT JOIN Realty_peoples ЗА Peoples.id = Realty_peoples.id_peoples; |
Да претпоставиме дека сакаме да се разјаснат на барање и не емитува на податоци, каде што типот на законот - "сопственост". Ако ние едноставно додадете, ја користи левата приклучат SQL, на пример на следниве услови:
...
Каде тип <> "сопственост" |
ние ќе ги изгубите податоците од луѓе кои немаат имот, бидејќи Нулев нултата вредност не е споредба на следниов начин:
Query1 | ||||||
id | L_name | F_name | Middle_name | роденден | id_realty | тип |
5 | Gerasimovsky | се надевам | P. | 1992/03/14 | 4 | заедничките делови |
6 | Gerasimovsky | Олег | Albertovich | 1985/01/29 | 4 | заедничките делови |
7 | Sukhanovskaya | жирито | А. | 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 | ||||||
id | L_name | F_name | Middle_name | роденден | id_realty | тип |
1 | Иванова | Дарија | Б. | 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 | жирито | А. | 1976/09/25 | 3 | Вкупно заедничка сопственост |
8 | Sukhanovskaya |
Јулија | Y. | 2001/01/10 | 3 | Вкупно заедничка сопственост |
Така, следејќи ги едноставните на лево се приклучат SQL пример, доби листа на сите луѓе, се движи понатаму, едно од овие својства во капиталот / заедничка сопственост.
Како заклучок би сакал уште еднаш дека примерок од било информации од базата на податоци треба да се преземат одговорно да се нагласи. Многу нијанси отвори пред нас со левата се приклучат SQL едноставен пример, на објаснување на кој еден - пред да почнат да пишуваат дури и основните пребарување, ќе мора внимателно да се разбере она што сакаме да се добие во на крајот. Со среќа!
Similar articles
Trending Now