СКЛ Селф-Јоин

Skl Self Join



Једна од најпознатијих карактеристика релационих база података је спајање. Придруживања су једна од најмоћнијих и најсложенијих карактеристика релационих база података. Они омогућавају широку модуларност и веома сложене односе између табела базе података без угрожавања перформанси.

Међутим, постоји тип спајања у СКЛ-у који има тенденцију да иде испод радара који је познат као селф-јоин.

У СКЛ-у, самопридруживање је моћна техника која нам омогућава да комбинујемо редове из исте табеле на основу сродне колоне унутар исте табеле.







За разлику од другог типа спајања у СКЛ-у где узимамо податке из више табела, само-придруживање ради на једној табели.



Можда се питате, зашто ми треба самопридруживање када могу да потражим податке из саме табеле? Иако је то можда тачно, самопридруживање може помоћи у задацима када треба да извршите рекурзивне упите података или пронађете хијерархијске податке.



У суштини, само-придруживање игра основну улогу у којој треба да упоредите редове исте табеле.





Придружите нам се у овом посту док истражујемо шта су само-придруживања, како функционишу и како их можемо користити у СКЛ табели.

НАПОМЕНА: Пре него што уђемо, поставићемо основну табелу у сврху демонстрације. Међутим, осећате се да користите било који подржани скуп података.



Примјера података

Следећи упити креирају основну табелу која садржи информације о производу и умеће узорке записа у табелу. Ово нам омогућава да демонстрирамо како да радимо са самопридруживањем у СКЛ-у.

ЦРЕАТЕ ТАБЛЕ Производи (
продуцт_ид ИНТ ПРИМАРНИ КЉУЧ,
продуцт_наме ВАРЦХАР(255) НОТ НУЛЛ,
парент_ид ИНТ
);

Додајте 10 узорака записа у табелу.

ИНСЕРТ ИНТО Продуцтс (продуцт_ид, продуцт_наме, парент_ид) ВРЕДНОСТИ
(1, 'Електроника', НУЛЛ),
(2, 'Паметни телефони', 1),
(3, 'Лаптопови', 1),
(4, 'иПхоне 13', 2),
(5, 'Самсунг Галаки С21', 2),
(6, 'МацБоок Про', 3),
(7, 'Делл КСПС 15', 3),
(8, 'Прибор', НУЛЛ),
(9, 'Футри за телефон', 8),
(10, 'Торбе за лаптоп', 8);

Добијена табела је следећа:

Пример 1: Основно самопридруживање

Почнимо са основним самопридруживањем. На пример, можемо да користимо једноставно само-придруживање да бисмо преузели однос родитељ-дете исте табеле.

На пример, можемо га користити да пронађемо све производе и њихове одговарајуће родитељске производе. Можемо да покренемо упит на следећи начин:

СЕЛЕЦТ ц.продуцт_наме АС цхилд_продуцт, п.продуцт_наме АС надређени_производ
ИЗ производа ц
ЛЕФТ ЈОИН Производи п ОН ц.парент_ид = п.продуцт_ид;

У датом примеру упита користимо „ц“ као псеудоним за табелу производа која представља подређене производе.

Такође креирамо псеудоним „п“ за табелу производа да представља родитељске производе.

У следећем кораку користимо основни СКЛ ЛЕФТ ЈОИН да бисмо осигурали да су производи највишег нивоа укључени у резултат.

На крају, користимо клаузулу ОН да бисмо креирали однос између подређених и надређених записа користећи колоне „парент_ид“ и „продуцт_ид“.

Добијена табела је следећа:

Приметићете да надређени производи немају горњу везу јер се налазе на врху хијерархије који су такође познати као основни елементи.

Пример 2: Дохватите хијерархијске податке

Једна од најосновнијих улога самопридруживања је преузимање хијерархијских података. На пример, претпоставимо да желимо да преузмемо све подређене производе где је производ једнак „Додаци“. Можемо покренути упит користећи самопридруживање на следећи начин:

СЕЛЕЦТ ц.продуцт_наме АС цхилд_продуцт
ИЗ производа ц
ПРИДРУЖИТЕ СЕ Производи п ОН ц.парент_ид = п.продуцт_ид
ВХЕРЕ п.продуцт_наме = 'Додатна опрема';

У овом случају користимо ЈОИН да комбинујемо табелу производа са собом, а затим користимо клаузулу ВХЕРЕ да филтрирамо резултате које желимо.

Закључак

У овом водичу смо истражили шта је самопридруживање, како функционише и како га можемо користити у СКЛ табели за преузимање хијерархијских података или извршавање рекурзивних упита.