Табеле за спајање СКЛите: унутрашње, природно, лево споља, попречно (примери)

Преглед садржаја:

Anonim

СКЛите подржава различите типове СКЛ придруживања, попут ИННЕР ЈОИН, ЛЕФТ ОУТЕР ЈОИН и ЦРОСС ЈОИН. Свака врста ЈОИН-а користи се за другачију ситуацију као што ћемо видети у овом водичу.

У овом упутству ћете научити-

  • Увод у клаузулу СКЛите ЈОИН
  • ИННЕР ЈОИН
  • ПРИДРУЖИТЕ СЕ ... КОРИШЋЕЊУ
  • ПРИРОДНИ ПРИДРУЖИТЕ
  • ЛИЈЕВО ВАЊСКО ПРИДРУЖИТЕ
  • ЦРОСС ЈОИН

Увод у клаузулу СКЛите ЈОИН

Када радите на бази података са више табела, често требате добити податке из тих више табела.

Клаузулом ЈОИН можете да повежете две или више табела или подупита придруживањем. Такође, можете дефинисати према којој колони треба да повежете табеле и под којим условима.

Било која клаузула ЈОИН мора имати следећу синтаксу:

Свака клаузула о придруживању садржи:

  • Табела или подупит који је лева табела; табелу или подупит пре клаузуле за придруживање (лево од ње).
  • ЈОИН оператор - наведите тип придруживања (или УНУТРАШЊЕ ПРИДРУЖИВАЊЕ, ЛЕВО ВАЊСКО ПРИДРУЖИВАЊЕ или ПРЕКРШАЊЕ).
  • ОГРАНИЧЕЊЕ ПРИДРУЖИВАЊА - након што сте одредили табеле или подупите које желите да придружите, потребно је да наведете ограничење придруживања, што ће бити услов на којем ће се одабрати одговарајући редови који одговарају том услову, у зависности од типа придруживања.

Имајте на уму да за све следеће примере морате покренути склите3.еке и отворити везу са узором базе података као текућу:

Корак 1) У овом кораку,

  1. Отворите Мој рачунар и идите до следећег директоријума " Ц: \ склите " и
  2. Затим отворите " склите3.еке ":

Корак 2) Отворите базу података " ТуториалсСамплеДБ.дб " следећом командом:

Сада сте спремни за покретање било које врсте упита у бази података.

СКЛите ИННЕР ЈОИН

ИННЕР ЈОИН враћа само редове који се подударају са условом придруживања и уклања све остале редове који се не подударају са условом придруживања.

Пример

У следећем примеру придружићемо две табеле „ Студенти “ и „ Одељења “ помоћу одељења Ид да бисмо добили име одељења за сваког ученика, како следи:

СЕЛЕЦТСтудентс.СтудентНаме,Департментс.ДепартментНамеОД ученикаУНУТАРЊЕ ПРИДРУЖИВАЊЕ Одељењима НА Студент.ДепартментИд = Департментс.ДепартментИд;

Објашњење кода:

ИННЕР ЈОИН ради на следећи начин:

  • У клаузули Селецт можете да изаберете колоне које желите да изаберете из две табеле на које се упућује.
  • Клаузула ИННЕР ЈОИН написана је након прве табеле на коју се позива клаузула „Од“.
  • Тада је услов придруживања наведен са ОН.
  • За табеле са референцама могу се навести псеудоними.
  • ИННЕР реч није обавезна, можете само да напишете ПРИДРУЖИТЕ СЕ.

Излаз:

  • УНУТАРЊИ ПРИДРУЖУЈЕ записе из обе табеле - студената и табела одсека који се подударају са условом „ С тудентс.ДепартментИд = Департментс.ДепартментИд “. Неуспоредиви редови ће се занемарити и неће бити укључени у резултат.
  • Због тога је само 8 ученика од 10 ученика враћено из овог упита са одељењима за ИТ, математику и физику. Док студенти "Јена" и "Георге" нису били обухваћени, јер имају нулти ИД одељења, који се не подудара са колоном ид одељења из табеле одељења. Гласи:

СКЛите ПРИДРУЖИТЕ СЕ ... КОРИШЋЕЊУ

ИННЕР ЈОИН се може написати употребом клаузуле „УСИНГ“ да би се избегла сувишност, па уместо да напишете „ОН Студентс.ДепартментИд = Департментс.ДепартментИд“, можете само да напишете „УСИНГ (ДепартментИД)“.

Можете да користите „ПРИДРУЖИ СЕ ... КОРИШЋЕЊЕ“ кад год су колоне које ћете упоређивати у услову придруживања истог имена. У таквим случајевима нема потребе да их понављате користећи услов и само наведите имена колона и СКЛите ће то открити.

Разлика између УНУТАРЊЕГ ПРИДРУЖИВАЊА И ПРИДРУЖИВАЊА ... КОРИШЋЕЊЕ:

Уз „ПРИДРУЖИТЕ СЕ

… КОРИШЋЕЊЕ "не напишете услов придруживања, већ само напишете ступац придруживања који је заједнички између две спојене табеле, уместо да напишете табле1" ИННЕР ЈОИН табле2 ОН табле1.цола = табле2.цола "то напишемо као" табле1 ПРИДРУЖИТЕ се табле2 КОРИШЋЕЊЕ (кола) ".

Пример

У следећем примеру придружићемо две табеле „ Студенти “ и „ Одељења “ помоћу одељења Ид да бисмо добили име одељења за сваког ученика, како следи:

СЕЛЕЦТСтудентс.СтудентНаме,Департментс.ДепартментНамеОД ученикаУНУТАРЊЕ ПРИДРУЖИВАЊЕ Одељењима КОРИШЋЕЊЕ (ДепартментИд);

Објашњење

  • За разлику од претходног примера, нисмо написали „ ОН Студентс.ДепартментИд = Департментс.ДепартментИд “. Управо смо написали „ УСИНГ (ДепартментИд) “.
  • СКЛите аутоматски изводи услов придруживања и упоређује ДепартментИд из обе табеле - Студенти и Одељења.
  • Ову синтаксу можете користити кад год су две колоне које упоређујете истог имена.

Оутпут

  • Ово ће вам дати исти тачан резултат као у претходном примеру:

СКЛите НАТУРАЛ ЈОИН

ПРИРОДНИ ЈОИН је сличан ЈОИН-у ... КОРИШТЕЊЕМ, разлика је у томе што аутоматски тестира једнакост између вредности сваке колоне која постоји у обе табеле.

Разлика између УНУТАРЊЕГ И ПРИРОДНОГ ПРИДРУЖИВАЊА:

  • У УНУТАРЊЕМ ПРИДРУЖИВАЊУ морате навести услов спајања који унутрашњи спој користи за спајање две табеле. Док у природном удруживању не пишете услов придруживања. Само напишете имена две табеле без икаквог услова. Тада ће природно удруживање аутоматски тестирати једнакост вредности за сваки ступац који постоји у обе табеле. Природно спајање аутоматски утврђује услов спајања.
  • У ПРИРОДНОМ ПРИДРУЖИВАЊУ, сви ступци из обе табеле са истим именом биће међусобно усклађени. На пример, ако имамо две табеле са два заједничка имена колона (две колоне постоје са истим именом у две табеле), тада ће се природно придруживање придружити двема табелама упоређивањем вредности обе колоне, а не само из једне колона.

Пример

СЕЛЕЦТСтудентс.СтудентНаме,Департментс.ДепартментНамеОД ученикаНатурал Придружите се одељењима;

Објашњење

  • Не треба да напишемо услов придруживања са именима колона (као што смо то урадили у ИННЕР ЈОИН). Чак ни једном није требало да напишемо назив колоне (као у ПРИДРУЖИВАЊУ КОРИШЋЕЊА).
  • Природно спајање скенираће оба ступца из две табеле. Откриће да услов треба да се састоји од упоређивања ДепартментИд из обе табеле Студенти и Одељења.

Оутпут

  • Натурал ЈОИН ће вам дати исти тачан излаз као и излаз који смо добили из примера ИННЕР ЈОИН и ЈОИН УСИНГ. Јер су у нашем примеру сва три упита еквивалентна. Али у неким случајевима, излаз ће се разликовати од унутрашњег спајања него у природном. На пример, ако постоји више табела са истим именима, тада ће се природно спајање подударати са свим колонама. Међутим, унутрашње спајање ће се подударати само са колонама у стању спајања (више детаља у следећем одељку; разлика између унутрашњег спајања и природног спајања).

СКЛите ЛЕВО ВАЊСКО ПРИДРУЖИТЕ

СКЛ стандард дефинише три типа ВАЊСКИХ ПРИДРУЖЕЊА: ЛИЈЕВО, ДЕСНО и ПУНО, али СКЛите подржава само ЛИЈЕВО ВАЊСКО ПРИДРУЖИВАЊЕ.

У ЛЕВО ВАЊСКО ПРИДРУЖИВАЊЕ, све вредности колона које одаберете из леве табеле биће укључене у резултат упита, па ће, без обзира на вредност која се подудара са условом придруживања, бити укључене у резултат.

Дакле, ако лева табела има 'н' редова, резултати упита ће имати 'н' редова. Међутим, за вредности колона које долазе из десне табеле, ако било која вредност која се не подудара са условом придруживања, садржаће „нулл“ вредност.

Тако ћете добити број редова еквивалентан броју редова у левом споју. Тако ћете добити одговарајуће редове из обе табеле (попут резултата ИННЕР ЈОИН), плус неподударајуће се редове из леве табеле.

Пример

У следећем примеру ћемо покушати да се „ЛЕВО ПРИДРУЖИ“ да се придружи две табеле „Студенти“ и „Одељења“:

СЕЛЕЦТСтудентс.СтудентНаме,Департментс.ДепартментНамеОД ученика - ово је лева табелаЛИЈЕВО ПРИДРУЖИТЕ СЕ ОДЈЕЛИМА НА Студентима.ДепартментИд = Департментс.ДепартментИд;

Објашњење

  • Синтакса ЛЕФТ ЈОИН је иста као ИННЕР ЈОИН; напишете ЛЕФТ ЈОИН између две табеле, а затим услов придруживања долази након клаузуле ОН.
  • Прва табела након клаузуле фром је лева табела. Док је друга табела наведена након левог спајања десна табела.
  • Клаузула ОУТЕР није обавезна; ЛИЈЕВО ВАЊСКО ПРИДРУЖИВАЊЕ исто је што и ЛИЈЕВО ПРИДРУЖИВАЊЕ.

Оутпут

  • Као што видите, укључени су сви редови из табеле ученика, што укупно чини 10 ученика. Чак и ако четврти и последњи студент, Јена и Георге, ИД одсека не постоје у табели Одељења, они су такође укључени.
  • А у овим случајевима вредност одсекаНаме и за Јену и за Џорџа биће „нула“, јер табела одељења нема одељењеНаме које се подудара са њиховом вредношћу одељењаИд.

Дајмо претходни упит користећи лево спајање дубље објашњење помоћу Ван дијаграма:

ЛЕВИ ЈОИН ће дати свим студентима имена из табеле ученика, чак и ако студент има ИД одељења који не постоји у табели одељења. Дакле, упит вам неће дати само одговарајуће редове као УНУТАРЊЕ ПРИДРУЖИВАЊЕ, већ ће вам дати додатни део који има неподударне редове из леве табеле која је табела ученика.

Имајте на уму да ће било које име ученика које нема одговарајуће одељење имати „нулл“ вредност за назив одељења, јер за њега не постоји одговарајућа вредност, а те вредности су вредности у редовима који се не подударају.

СКЛите ЦРОСС ЈОИН

ЦРОСС ЈОИН даје картезијански производ за изабране колоне две спојене табеле, подударањем свих вредности из прве табеле са свим вредностима из друге табеле.

Дакле, за сваку вредност у првој табели добићете 'н' подударања из друге табеле где је н број редова друге табеле.

За разлику од ИННЕР ЈОИН и ЛЕФТ ОУТЕР ЈОИН, код ЦРОСС ЈОИН не морате да наведете услов придруживања, јер СКЛите то не треба за ЦРОСС ЈОИН.

СКЛите ће резултирати логичким резултатима постављеним комбиновањем свих вредности из прве табеле са свим вредностима из друге табеле.

На пример, ако сте изабрали колону из прве табеле (цолА) и другу колону из друге табеле (цолБ). ЦолА садржи две вредности (1,2), а цолБ такође садржи две вредности (3,4).

Тада ће резултат ЦРОСС ЈОИН бити четири реда:

  • Два реда комбиновањем прве вредности из цолА која је 1 са две вредности цолБ (3,4) које ће бити (1,3), (1,4).
  • Исто тако, два реда комбиновањем друге вредности из цолА која је 2 са две вредности цолБ (3,4) које су (2,3), (2,4).

Пример

У следећем упиту испробаћемо ЦРОСС ЈОИН између табела Студенти и Одељења:

СЕЛЕЦТСтудентс.СтудентНаме,Департментс.ДепартментНамеОД ученикаЦРОСС ЈОИН Одељења;

Објашњење

  • У клаузули за одабир управо смо изабрали две колоне „име ученика“ из табеле ученика и „име одељења“ из табеле одељења.
  • За унакрсно спајање нисмо навели ниједан услов за спајање, већ само две табеле комбиноване са ЦРОСС ЈОИН усред њих.

Излаз:

Као што видите, резултат је 40 редова; 10 вредности из табеле ученика подударало се са 4 одељења из табеле одељења. Гласи:

  • Четири вредности за четири одељења из табеле одељења подударају се са првим студентом Мицхелом.
  • Четири вредности за четири одељења из табеле одељења подударају се са другим студентом Јованом.
  • Четири вредности за четири одељења из табеле одељења подударале су се са трећим студентом Јацком.

    … и тако даље.

Резиме

Коришћењем СКЛите ЈОИН-ова можете повезати једну или више табела или подупита како бисте изабрали колоне из обе табеле или подупита.