Увод у врсте придруживања у СКЛ-у
Клаузула за придруживање у СКЛ-у служи за сврху комбиновања редова из две или више табела. Процес комбиновања редова зависи од ступца који је повезан са њима. Четири различите врсте спајања у СКЛ-у су именоване као унутрашње придруживање, лево придруживање, десно придруживање и потпуно придруживање. Пре него што заиста почнемо да користимо било коју врсту спајања, потребан нам је РДБМС или систем за управљање релацијским базама података у који ћемо учитати податке. Један од веома једноставних начина за разумевање придруживања је употреба Веннове дијаграме. Коришћењем Венновог дијаграма олакшава се одмеравање свих могућих и логичних односа између различитих скупова података. Разумејмо ово једно по једно користећи Веннов дијаграм. Касније ћемо схватити разлику између ових помоћу неких практичних примера. Претпоставимо да у нашој бази података постоје два скупа података похрањених у облику Табеле прве и Табеле две. Постоји одређена веза између две табеле која је наведена у облику примарног и концепта страног кључа. Ако се придружите двема табелама које имају неку врсту односа, Веннов дијаграм представљаће сценарио као нешто,
Количина овог преклапања одредиће степен сличности двеју табела, тј. Табеле А и Табеле Б. То значи да је број записа из табеле један, који се подударају са записима из друге табеле, представљен одељем преклапања. Ово је један подскуп података. Добијамо четири различите врсте спајања на основу подскупина података које прикупљамо из две табеле.
Синтакса придруживања:
SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Врсте придруживања у СКЛ-у
- Иннер Јоин
- Лефт Јоин
- Ригхт Јоин
- Потпуно се придружите
У наставку детаљно објашњавамо различите врсте придруживања.
1. Унутрашње придруживање
У унутрашњем спајању, бирамо само оне податке који су заједнички у обе табеле. (тј. део 3 овде) Да би се то прецизније, сви записи из обе табеле који се подударају са условима поменутим са придруживањем, бирају се у овом придруживању.
Синтакса унутрашњег придруживања:
SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition
2. Лево придруживање
У левој заједници одабиремо све податке из леве табеле, а из десне табеле само одабиремо скуп података који се подударају са стањем наведеним са спајањем (овде подручје 1 + 3)
Синтакса леве Придружите се:
SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
3. Ригхт Јоин
У десном придруживању, ми одабиремо све податке из десне табеле, а из леве таблице одабиремо само скуп података који се поклапају са условом наведеним са придруживањем (овде 3 + 2)
Синтакса десног придруживања:
SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
4. Потпуно се придружите
Потпуно спајање, сви записи формирају и табеле, спајају се и одабиру без обзира на наведени услов са испуњењем или не. (овде 1 + 2 + 3)
Синтакса пуног придруживања:
SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Примери придруживања у СКЛ-у
Размотрите две табеле дате у наставку:
1. Пример ОРДЕР_ДЕТАИЛС
Табела наруџбе садржи детаље наруџбе купца као што су ИД наруџбе, број наручених производа, износ наруџбе, ИД купца који је послао наруџбу и датум када је наруџба била послана. Такву врсту табеле може користити било који веб вебсајт за чување детаља наруџбе.
ОРДЕР_ДЕТАИЛС Табела:
ИД поруџбине | Но_оф_Итемс | Ордер_Амоунт | Идентификација купца | Датум поруџбине |
123 | 3 | 5500 | П_1 | 20.01.2019 |
234 | 2 | 6500 | П_12 | 10.02.2019 |
345 | 1 | 10000 | П_13 | 27.05.2019 |
456 | 4 | 4000 | П_14 | 11.07.2019 |
567 | 2 | 20656 | П_1 | 15.12.2019 |
678 | 3 | 15000 | П_11 | 27.10.2019 |
2. Пример ЦУСТОМЕР_ДЕТАИЛС
Сада узмимо још једну табелу у којој ће бити смештени детаљи купца како бисмо могли да доставимо наруџбу на њихове одговарајуће адресе. Стога ће табела корисника имати детаље о купцу, као што су ИД клијента (цуст_ид) који ће бити јединствени за сваког купца. Сада се име и презиме чувају у пољу званом - Цуст_Фирст_Наме и Цуст_Ласт_Наме. Остала поља ће сачувати податке као што су ИД е-поште, мобилни број купца, заједно са адресом, Пинцоде-ом, градом и државом. Тако можемо видети да ће наша таблица купаца изгледати као:
Табела ЦУСТОМЕР_ДЕТАИЛС:
Цуст_Ид | Цуст_Фирст_Наме | Цуст_Ласт_Наме | Пин код | Адреса | Цуст_Мобиле | Град | Држава | Цуст_емаил |
П_50 | Алице | Петер | 111111 | 330 киз стреет | 123 | Бангалор | КА | |
П_12 | Џејмс | Дсоуза | 155511 | Колонија 420 абц | 234 | Хидерабад | АП | |
П_15 | Харри | Поттер | 123456 | 551 мг пут | 444 | Ноида | Делхи | |
П_40 | Милеи | Паркер | 111121 | 11 стопа пут | 224 | Бангалор | КА | |
П_10 | Херман | Бусх | 123423 | 34. улица улице | 432 | Делхи | Делхи | |
П_18 | Дан | Смеђе | 134523 | 50. независни пут | 145 | Гуруграм | Хариана | |
П_20 | Џејмс | Руссел | 111111 | Пут од 101 мг | 678 | Бангалор | КА | |
П_1 | Милеи | Мадисон | 100011 | 45. распоред кавераппа | 987 | Цхеннаи | ТН |
Сада користећи овај пример, разумјет ћемо функционалност спајања. Можемо видети да је однос између две табеле тј. Таблице ОРДЕР_ДЕТАИЛС и таблице ЦУСТОМЕР_ДЕТАИЛС успостављен кључем који има вредност корисничког ИД-а, тј. Цустомер_Ид који је примарни кључ у табели ЦУСТОМЕР_ДЕТАИЛС и страни кључ у ОРДЕР_ДЕТАИЛС табела.
Неколико важних ствари које овде треба напоменути пре него што наставимо су:
- Нису сви купци у нашој табели ЦУСТОМЕР_ДЕТАИЛС поставили захтев за поруџбину.
- Нису сви захтеви за наруџбу који се налазе у нашој табели ОРДЕР_ДЕТАИЛС садрже цустомер_ид који је присутан у нашој табели ЦУСТОМЕР_ДЕТАИЛС, што значи да за неке поруџбине нема детаља о купцу.
3. Унутрашње придруживање
Унутрашња придруживање ће вам дати само оне записе за које је услов испуњен.
Упит:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
inner join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
Излаз:
Цуст_Фирст_Наме | Цуст_емаил | Но_оф_Итемс | Ордер_Амоунт | Датум поруџбине |
Милеи | 3 | 5500 | 20.01.2019 | |
Џејмс | 2 | 6500 | 10.02.2019 | |
Милеи | 2 | 20656 | 15.12.2019 |
4. Лево придруживање
Лево придруживање пружиће вам све записе са леве табеле, тј. Таблице ЦУСТОМЕР_ДЕТАИЛС. Ако нема наруџби купца, вратит ће нулту вриједност за ступце у таблици ОРДЕР_ДЕТАИЛС.
Упит:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
left join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
Излаз:
Цуст_Фирст_Наме | Цуст_емаил | Но_оф_Итемс | Ордер_Амоунт | Датум поруџбине |
Алице | НУЛА | НУЛА | НУЛА | |
Џејмс | 2 | 6500 | 10.02.2019 | |
Харри | НУЛА | НУЛА | НУЛА | |
Милеи | НУЛА | НУЛА | НУЛА | |
Херман | НУЛА | НУЛА | НУЛА | |
Дан | НУЛА | НУЛА | НУЛА | |
Џејмс | НУЛА | НУЛА | НУЛА | |
Милеи | 3 | 5500 | 20.01.2019 | |
Милеи | 2 | 20656 | 15.12.2019 |
5. Ригхт Јоин
У реду, Јоин ће вам дати све записе из десне табеле тј. ОРДЕР_ДЕТАИЛС табеле. Ако за наруџбу није пронађена ниједна евиденција корисника, она ће вратити нулту вриједност за ступце у таблици ЦУСТОМЕР_ДЕТАИЛС.
Упит:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
right join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
Излаз:
Цуст_Фирст_Наме | Цуст_емаил | Но_оф_Итемс | Ордер_Амоунт | Датум поруџбине |
Милеи | 3 | 5500 | 20.01.2019 | |
Џејмс | 2 | 6500 | 10.02.2019 | |
НУЛА | НУЛА | 1 | 10000 | 27.05.2019 |
НУЛА | НУЛА | 4 | 4000 | 11.07.2019 |
Милеи | 2 | 20656 | 15.12.2019 | |
НУЛА | НУЛА | 3 | 15000 | 27.10.2019 |
6. Потпуно се придружите
Потпуно придруживање пружиће вам све записе наведене из обе табеле.
Упит:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
full join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
Излаз:
Цуст_Фирст_Наме | Цуст_емаил | Но_оф_Итемс | Ордер_Амоунт | Датум поруџбине |
Алице | НУЛА | НУЛА | НУЛА | |
Џејмс | 2 | 6500 | 10.02.2019 | |
Харри | НУЛА | НУЛА | НУЛА | |
Милеи | НУЛА | НУЛА | НУЛА | |
Херман | НУЛА | НУЛА | НУЛА | |
Дан | НУЛА | НУЛА | НУЛА | |
Џејмс | НУЛА | НУЛА | НУЛА | |
Милеи | 3 | 5500 | 20.01.2019 | |
Милеи | 2 | 20656 | 15.12.2019 | |
НУЛА | НУЛА | 1 | 10000 | 27.05.2019 |
НУЛА | НУЛА | 4 | 4000 | 11.07.2019 |
НУЛА | НУЛА | 3 | 15000 | 27.10.2019 |
Предности придруживања у СКЛ-у
- Брже извршење, што значи и брже проналажење жељених колона.
- Оптимизовано, читљиво и разумљиво
- Повећање перформанси.
Закључак
Као што се види, користимо ЈОИН-ове за додавање и добивање поља из различитих табела.
- Иннер Јоин дохваћа записе у којима је испуњен дани услов.
- Лево придруживање пружиће вам све редове са леве табеле, чак и када се наведени услов не подудара.
- Десно придруживање пружиће вам све редове са леве табеле, чак и када се наведени услови не подударају.
- Потпуно придруживање враћа све редове када постоји подударање у једној од табела.
- Упити за придруживање могу се користити с наредбама попут - СЕЛЕЦТ, ИНСЕРТ, УПДАТЕ, ДЕЛЕТЕ.
- Придруживања се такође слажу са различитим клаузулама попут - ГРУПА ПО, ПОДРАЗУМЕВАЊА, ГДЈЕ, АГРЕГАТНЕ ФУНКЦИЈЕ итд.
Препоручени чланак
Ово је водич за Врсте придруживања у СКЛ-у. Овде смо расправљали о различитим врстама придруживања у СКЛ-у и његовим предностима заједно са примерима. Можете и да прођете кроз друге наше предложене чланке да бисте сазнали више -
- Предности НоСКЛ-а
- СКЛ Алати за управљање
- База података у СКЛ-у
- Вилдцард у СКЛ-у
- Топ 6 врста придруживања у МиСКЛ-у са примерима