Advanced MySQL – Set Operators

Set Operators

 

Union, Unionall, Intersect, Minus ஆகிய நான்கும் set operators ஆகும். இரண்டு table-களில் இத்தகைய set operators-ஐப் பயன்படுத்தும் போது எப்படித் தகவல்கள் வெளிவருகின்றன என்பதைப் பின்வரும் படத்தின் மூலம் சுலபமாகப் புரிந்து கொள்ளலாம்.

 

Union & Union All

UNION என்பது இரண்டு வெவ்வேறு table-களில் இருக்கும் தகவல்களை ஒன்றாக இணைத்து வெளிப்படுத்துகிறது.

 

Query-57

உதாரணத்துக்கு ஒரு் நிறுவனத்தில் உள்ளவர்கள் சென்ற வருடத்திலிருந்து இந்த வருடத்துக்கு பதவி உயர்வு பெற்றுள்ளார்களா இல்லையா என்பதை, current_year, last_year எனும் இரண்டு வெவ்வேறு table-களிலிருந்து அவர்களுடைய பதவியினை எடுத்து ஒப்பிட்டுப் பார்த்து தெரிந்து கொள்ளலாம்.

select * from current_year union select * from Last_year;

 

 

 

 

 

 

 

 

 

 

இதில் Emp_id 9999,5555,2222,8888 போன்றவற்றிற்கு ஒரே ஒரு முறை மட்டும் entry காணப்படுகிறது. பொதுவாக Union என்பது duplicate தகவல்களைத் தவிர்த்துவிடும். எனவே இவர்களெல்லாம் பதவி உயர்வு பெறாமல், இரண்டு table-களிலும் ஒரே பதவியுடன் இருப்பவர்கள் என்றே நினைக்கிறேன். எனினும் இதனை உறுதி செய்து கொள்ள UNION ALL-ஐப் பயன்படுத்தலாம். இது duplicates-ஐயும் சேர்த்து வெளிப்படுத்தும்.

 

Query-58

select * from current_year union all select * from Last_year;

 

 

 

 

 

 

 

 

 

 

இப்பொழுது Emp_id 2222-க்கு மட்டும் duplicate entry காணப்படுகிறது. எனவே இவர் மட்டுமே பதவி உயர்வு பெறாதவர். மற்றவர்களெல்லாம், இந்த வருடத்தில் வேலைக்குச் சேர்ந்தவர்களாக இருக்க வேண்டும் அல்லது சென்ற வருடத்தில் வேலையை விட்டுச் சென்றவர்களாக இருக்க வேண்டும்.

Intersect

 

INTERSECT என்பது இரண்டு வெவ்வேறு table-களில் இருக்கும் பொதுவான தகவல்களை எடுத்து வெளிப்படுத்துகிறது. அதாவது ஒருவருடைய பதவி current_year, last_year எனும் இரண்டு table-களிலும் ஒரே மாதிரியாக இருப்பின் அதனை எடுத்து வெளிப்படுத்துகிறது. எனவே இதன் மூலம் பதவி உயர்வு பெறாதவர்களின் விவரங்களை எளிமையாகக் கண்டுபிடித்து விடலாம்.

Mysql-ல் INTERSECT எனும் keyword கிடையாது. ஏனெனில் intersect-ன் செயல்பாட்டினை நாம் INNER JOIN கொண்டே நிகழ்த்தி விட முடியும்.

Query-59

select c.emp_id,c.role from current_year c join Last_year l

on c.emp_id=l.emp_id and c.role=l.role;

 

Minus

 

MINUS என்பது முதல் table-ல், இருக்கும் விவரங்கள் இரண்டாவது table-ல் காணப்பட்டால் அதனைக் கழித்துவிட்டு, இரண்டாவது table-ல் இல்லாத விவரங்களை மட்டுமே வெளிப்படுத்தும். எனவே இந்த வருடத்தில் புதிதாக வேலைக்குச் சேர்ந்தவர்களைத் தெரிந்து கொள்ள current_year MINUS last_year எனக் கொடுத்தால் போதுமானது.

 

Mysql-ல் MINUS எனும் keyword கிடையாது. ஏனெனில் minus-ன் செயல்பாட்டினை நாம் LEFT OUTER JOIN-உடன் ஒரு் சிறிய condition-ஐ இணைப்பதன் மூலம் நிகழ்த்தி விட முடியும்.

Query-60

 

select c.emp_id, c.role from current_year c left join Last_year l on c.emp_id=l.emp_id and c.role=l.role where l.emp_id is null;

 

 

 

 

 

 

 

 

 

 

—-

 

து. நித்யா

இவர் cognizant நிறுவனத்தில் Data Warehouse Testing-ல் பணியாற்றி வருகிறார்.

மின்னஞ்சல் : nithyadurai87@gmail.com

வலை : nithyashrinivasan.wordpress.com

%d bloggers like this: