வெளியில் சேர்வதற்கான காரணங்கள்
சொல்லப்போனால், நாங்கள் எங்கள் விரிதாள்களை ஒன்றிணைத்ததும், இன்னும் துப்புரவாளர் இல்லாததால் எங்களின் அலுவலகத்தை சுத்தம் செய்யும் பணிகள் காணாமல் போனதும் உங்களுக்கு நினைவிருக்கிறதா?
இது போன்ற வினவலை இயக்கினால்:
SELECT * FROM task
பின்னர் இந்த முடிவைப் பெறுகிறோம்:
ஐடி | பணியாளர்_ஐடி | பெயர் | காலக்கெடுவை |
---|---|---|---|
1 | 1 | முகப்பில் ஒரு பிழையை சரிசெய்யவும் | 2022-06-01 |
2 | 2 | பின்தளத்தில் ஒரு பிழையை சரிசெய்யவும் | 2022-06-15 |
3 | 5 | காபி வாங்கு | 2022-07-01 |
4 | 5 | காபி வாங்கு | 2022-08-01 |
5 | 5 | காபி வாங்குவார் | 2022-09-01 |
6 | (ஏதுமில்லை) | அலுவலகத்தை சுத்தம் செய்யுங்கள் | (ஏதுமில்லை) |
7 | 4 | வாழ்க்கையை அனுபவிக்கவும் | (ஏதுமில்லை) |
8 | 6 | வாழ்க்கையை அனுபவிக்கவும் | (ஏதுமில்லை) |
Employee_id மூலம் பணியாளர் அட்டவணையுடன் பணி அட்டவணையை இணைக்க முயற்சித்தால் "Clear Office" பணி மறைந்துவிடும்.
இந்தச் சிக்கலைத் தீர்க்க, JOIN ஆபரேட்டருக்கு பல்வேறு மாற்றிகள் சேர்க்கப்பட்டுள்ளன, அவை அத்தகைய அனாதை வரிசைகளை மற்றொரு அட்டவணையில் ஒரு ஜோடி இல்லாமல் சேமிக்க அனுமதிக்கின்றன.
JOIN ஆபரேட்டரின் உன்னதமான வடிவத்தை உங்களுக்கு நினைவூட்டுகிறேன்:
table 1 JOIN table 2 ON
condition
இடது அட்டவணையில் (அட்டவணை 1) உள்ள அனைத்து தரவும் இணைந்த அட்டவணையில் இருப்பதை உறுதிசெய்ய SQL சேவையகத்திடம் கூறலாம். சரியான அட்டவணையில் அவர்களுக்கு ஜோடி இல்லையென்றாலும். இதைச் செய்ய, நீங்கள் எழுத வேண்டும்:
table 1 LEFT JOIN table 2 ON condition
இணைக்கப்பட்ட அட்டவணையில் சரியான அட்டவணையில் இருந்து அனைத்து வரிசைகளும் இருக்க வேண்டுமெனில் , நீங்கள் எழுத வேண்டும்:
table 1 RIGHT JOIN table 2 ON
condition
நிறைவேற்றுபவர் இல்லாத பணிகள் இழக்கப்படாமல் இருக்க அனைத்து பணிகளையும் பணியாளர்களையும் இணைக்கும் வினவலை எழுதுவோம். இதைச் செய்ய, ஒரு வினவலை எழுதவும்:
SELECT * FROM employee e RIGHT JOIN task t ON e.id = t.emploee_id
மற்றும் இந்த வினவலின் முடிவு:
ஐடி | பெயர் | தொழில் | சம்பளம் | வயது | சேரும் நாள் | ஐடி | பணியாளர்_ஐடி | பெயர் |
---|---|---|---|---|---|---|---|---|
1 | இவனோவ் இவான் | புரோகிராமர் | 100000 | 25 | 2012-06-30 | 1 | 1 | முகப்பில் ஒரு பிழையை சரிசெய்யவும் |
2 | பெட்ரோவ் பெட்ர் | புரோகிராமர் | 80000 | 23 | 2013-08-12 | 2 | 2 | பின்தளத்தில் ஒரு பிழையை சரிசெய்யவும் |
4 | ரபினோவிச் மொய்ஷா | இயக்குனர் | 200000 | 35 | 2015-05-12 | 7 | 4 | வாழ்க்கையை அனுபவிக்கவும் |
5 | கிரியென்கோ அனஸ்தேசியா | அலுவலக மேலாளர் | 40000 | 25 | 2015-10-10 | 3 | 5 | காபி வாங்கு |
5 | கிரியென்கோ அனஸ்தேசியா | அலுவலக மேலாளர் | 40000 | 25 | 2015-10-10 | 4 | 5 | காபி வாங்கு |
5 | கிரியென்கோ அனஸ்தேசியா | அலுவலக மேலாளர் | 40000 | 25 | 2015-10-10 | 5 | 5 | காபி வாங்கு |
6 | வாஸ்கா | பூனை | 1000 | 3 | 2018-11-11 | 8 | 6 | வாழ்க்கையை அனுபவிக்கவும் |
(ஏதுமில்லை) | (ஏதுமில்லை) | (ஏதுமில்லை) | (ஏதுமில்லை) | (ஏதுமில்லை) | (ஏதுமில்லை) | 6 | (ஏதுமில்லை) | அலுவலகத்தை சுத்தம் செய்யுங்கள் |
எங்கள் அட்டவணையில் மற்றொரு வரிசை சேர்க்கப்பட்டுள்ளது, சுவாரஸ்யமாக, அதில் நிறைய NULL மதிப்புகள் உள்ளன. பணியாளர் அட்டவணையில் இருந்து எடுக்கப்பட்ட அனைத்து தரவுகளும் NULL ஆக காட்டப்படும், ஏனெனில் "சுத்தமான அலுவலகம்" பணிக்காக பணியாளர் அட்டவணையில் இருந்து செயல்படுத்துபவர் இல்லை.
வகைகளில் சேரவும்
மொத்தம் 4 வகையான JOINகள் உள்ளன. அவை கீழே உள்ள அட்டவணையில் வழங்கப்பட்டுள்ளன:
சுருக்கமான பதிவு | நீண்ட நுழைவு | விளக்கம் | |
---|---|---|---|
1 | சேரவும் | உள் இணைப்பு | ஏ மற்றும் பி அட்டவணையில் உள்ள பதிவுகள் மட்டுமே |
2 | இடதுபுறம் சேரவும் | லெஃப்ட் அவுட்டர் ஜாயின் | அட்டவணை A இலிருந்து ஒரு ஜோடி இல்லாத அனைத்து வரிசைகளும் இருக்க வேண்டும் |
3 | வலது சேரவும் | வலதுபுறம் சேரவும் | அட்டவணை B இலிருந்து ஒரு ஜோடி இல்லாத அனைத்து வரிசைகளும் இருக்க வேண்டும் |
4 | வெளியே சேரவும் | முழு வெளியில் சேரவும் | அட்டவணை A மற்றும் B இலிருந்து அடிப்படை ஜோடிகளின் அனைத்து வரிசைகளும் இருக்க வேண்டும் |
எளிமைக்காக, அட்டவணைகளை தொகுப்பாகக் குறிப்பிடுகிறோம் என்றால், JOIN என்பது படமாக காட்டப்படும்:
![](https://cdn.codegym.cc/images/article/66aba568-a02a-45e0-9939-6beebbb190ed/512.jpeg)
செட் குறுக்குவெட்டு என்பது ஒரு அட்டவணைக்கு அது குறிப்பிடும் மற்றொரு அட்டவணையில் இருந்து தொடர்புடைய பதிவு உள்ளது.
நேர்காணலில் இருந்து கேள்வி
சில நேரங்களில் புதிய புரோகிராமர்கள் ஒரு நேர்காணலில் மிகவும் எளிமையான கேள்வியைக் கேட்கிறார்கள். எங்கள் அட்டவணையைப் பொறுத்தவரை, அதை பின்வருமாறு உருவாக்கலாம்:
" பணிகள் இல்லாத அனைத்து ஊழியர்களின் பட்டியலைக் காண்பிக்கும் வினவலை எழுதவும் ." முதலில், இந்தக் கேள்வியை மீண்டும் எழுத முயற்சிப்போம்: " பணி அட்டவணையில் பணிகள் இல்லாத பணியாளர் அட்டவணையில் இருந்து அனைத்து ஊழியர்களின் பட்டியலைக் காண்பிக்கும் வினவலை எழுதவும் ." இந்த தொகுப்பை நாம் பெற வேண்டும்:![](https://cdn.codegym.cc/images/article/d3cc4f4a-b340-4b3a-9ae0-3e38eca36bb2/512.jpeg)
இந்த சிக்கலைத் தீர்க்க பல வழிகள் உள்ளன, ஆனால் நான் எளிமையானவற்றுடன் தொடங்குவேன்: முதலில், நீங்கள் எங்கள் அட்டவணையில் இடது இணைப்பில் சேரலாம், பின்னர் NULL கள் மூலம் காணாமல் போன தரவுகளின் அனைத்து வரிசைகளையும் விலக்க, WHERE ஐப் பயன்படுத்தலாம்.
SELECT * FROM employee e LEFT JOIN task t ON e.id = t.emploee_id
WHERE t.id IS NULL
மற்றும் இந்த வினவலின் முடிவு:
ஐடி | பெயர் | தொழில் | சம்பளம் | வயது | சேரும் நாள் | ஐடி | பணியாளர்_ஐடி | பெயர் |
---|---|---|---|---|---|---|---|---|
3 | இவனோவ் செர்ஜி | சோதனையாளர் | 40000 | முப்பது | 2014-01-01 | (ஏதுமில்லை) | (ஏதுமில்லை) | (ஏதுமில்லை) |
இந்த தீர்வின் ஒரே குறைபாடு என்னவென்றால், இங்கே அட்டவணையில் உள்ள வரிசைகளில் NULL உள்ளது, மேலும் நிபந்தனையின்படி நாம் ஊழியர்களின் பட்டியலைக் காட்ட வேண்டும்.
இதைச் செய்ய, பணியாளர் அட்டவணையின் தேவையான நெடுவரிசைகளை நீங்கள் SELECT இல் பட்டியலிட வேண்டும் அல்லது அவை அனைத்தையும் காட்ட வேண்டும் என்றால், பின்வரும் கட்டுமானத்தை நீங்கள் எழுதலாம்:
SELECT e.* FROM employee e, task t
முழுமையான கோரிக்கை இப்படி இருக்கும்:
SELECT e.*
FROM employee e RIGHT JOIN task t ON e.id = t.emploee_id
WHERE t.id IS NULL
இந்த வினவலின் முடிவு:
ஐடி | பெயர் | தொழில் | சம்பளம் | வயது | சேரும் நாள் |
---|---|---|---|---|---|
3 | இவனோவ் செர்ஜி | சோதனையாளர் | 40000 | முப்பது | 2014-01-01 |
வீட்டுப்பாடத்திற்கு மீதமுள்ள முறைகள் உங்களிடம் விடப்பட்டுள்ளன. அவர்களை நீங்களே கண்டுபிடிப்பதில் உள்ள மகிழ்ச்சியை நான் இழக்க விரும்பவில்லை.
GO TO FULL VERSION