Шта су подупити?
Подупит је одабрани упит који се налази унутар другог упита. Интерни упит за одабир обично се користи за одређивање резултата спољног упита за одабир.
Погледајмо синтаксу подупита -
Честа жалба купаца у МиФлик Видео Либрари је низак број наслова филмова. Управа жели да купује филмове за категорију која има најмање наслова.
Можете користити упит попут
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
То даје резултат
Погледајмо како овај упит функционише
Горе наведено је облик подупита за редове . У таквим подупитима унутрашњи упит може дати само ЈЕДАН резултат. Дозвољени оператори када раде са подупитима за редове су [=,>, =, <=,,! =,]
Погледајмо још један пример,
Претпоставимо да желите Имена и Телефонске бројеве чланова људи који су изнајмили филм и тек треба да их врате. Када добијете Имена и Телефонски број, позовите их да бисте их подсетили. Можете користити упит попут
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Погледајмо како овај упит функционише
У овом случају, унутрашњи упит враћа више резултата. Изнад је врста Т подупрта и.
До сада смо видели два упита, погледајмо сада пример троструког упита !!!
Претпоставимо да управа жели да награди члана који највише плаћа.
Можемо покренути упит попут
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Горњи упит даје следећи резултат -
Подупити против придруживања!
У поређењу са Јоинс, потупити су једноставни за употребу и лако се читају. Нису толико компликовани као Јоинс
Стога их СКЛ почетници често користе.
Али подупити имају проблема са перформансама. Коришћење придруживања уместо потупита понекад вам може повећати перформансе до 500 пута.
С обзиром на избор, препоручује се употреба ЈОИН-а преко подупита.
Потупити се требају користити као резервно решење само ако не можете да користите ЈОИН операцију да бисте постигли горе наведено
Резиме
- Потупити су уграђени упити унутар другог упита. Уграђени упит познат је као унутрашњи, а упит контејнера као спољни упит.
- Потупити су једноставни за употребу, нуде велику флексибилност и лако се могу поделити на појединачне логичке компоненте које чине упит који је врло користан при тестирању и отклањању грешака у упитима.
- МиСКЛ подржава три врсте подупита, скаларне, редоследе и табеле.
- Скалирани подупити враћају само један ред и једну колону.
- Подупити за редове враћају само један ред, али могу имати више колона.
- Потупити табеле могу вратити више редова као и колона.
- Подупити се такође могу користити у ИНСЕРТ, УПДАТЕ и ДЕЛЕТЕ упитима.
- За проблеме са перформансама, када је реч о преузимању података из више табела, топло се препоручује да користите ЈОИН-ове уместо подупита. Потупити се требају користити само са добрим разлогом.