Advanced MySQL – SubQueries

Subqueries

 

Sub query – ஐப் பற்றிக் கற்பதற்கு முன்னர் முதலில் அதன் அவசியத்தைத் தெரிந்து கொள்வோம். பின்வரும் உதாரணத்தில், ஒரு் அலுவலகத்திலுள்ள ஒவ்வொரு துறைக்கும் குறைந்தபட்ச சம்பளம் எவ்வளவு தரப்படுகிறது என்பதைக் கண்டுபிடிக்க பின்வரும் query-யைப் பயன்படுத்தலாம்.

 

 

 

 

 

 

 

 

 

பின்னர் IT_Finance-துறைக்கு அளிக்கப்படும் குறைந்தபட்ச சம்பளத்தைவிட அதிகமாக வாங்கும் துறைகளின் குறைந்த சம்பளத்தைக் கணக்கிட பின்வரும் query-யைப் பயன்படுத்தலாம்.

 

select department,min(salary) as sal from organisation group by department having sal>8500;

 

 

 

 

 

 

 

ஆனால் முதலில் IT_Finance-துறையின் குறைந்தபட்ச சம்பளத்தைத் தெரிந்து கொண்டு, பின்னர் அந்த மதிப்பினை condition-ல் கொடுப்பதற்கு பதிலாக, “IT_Finance-துறையின் குறைந்தபட்ச சம்பளத்தைத் தெரிந்து கொள்ளும் query-யையே” condition-ல் கொடுக்கலாம். இதுவே sub-query எனப்படும்.

 

Query-55

 

select department,min(salary) as sal from organisation group by department having sal>(select min(salary) from organisation where department=’IT_Finance’);

 

இதனை correlated மற்றும் non-correlated என்று இருவகையாகப் பிரிக்கலாம்.

 

Non-correlated Subquery

 

sub query-யில் உள்ள table-ம், வெளியில் இருக்கும் main query-யில் உள்ள table-ம் எந்த ஒரு condition-ஆலும் இணைக்கப்படாமல் இரண்டும் தனித்தனியாக அமைந்தால் அது non-correlated subquery எனப்படும்.

அதாவது வெறும் subquery-ஐ மட்டும் தனியாக எடுத்து execute செய்தால் கூட ஏதேனும் ஒரு் result கிடைக்கும். மேற்கண்ட உதாரணத்தில் நாம் பயன்படுத்தியிருப்பது non-correlated subquery வகையைச் சேர்ந்தது.

 

Correlated Subquery

 

sub query-யில் உள்ள table-ம், வெளியில் இருக்கும் main query-யில் உள்ள table-ம் ஏதேனும் ஒரு் condition-ஆல் இணைக்கப்பட்டிருந்தால் அது correlated subquery எனப்படும்.

அதாவது இத்தகைய sub query-ஆல் தனியாக இயங்க இயலாது. வெளியில் இருக்கும் query-உடன் சேர்த்து இயக்கினால் மட்டுமே அது result-ஐக் கொடுக்கும்.

Query-56

SELECT * FROM organisation org

WHERE exists (SELECT * FROM ITDepartment itd WHERE org.department = itd.dept_name);

 

 

%d bloggers like this: