தொகுதி பாடங்கள் (1/4)
இரண்டு அட்டவணைகளை இணைத்தல்: INNER JOIN
இப்போது வரை நாம் ஒரு நேரத்தில் ஒரு அட்டவணையைப் படித்தோம். இருப்பினும், உண்மையான உலகில் தரவு உள்ளது
பல தொடர்புடைய அட்டவணைகள் முழுவதும் பரவுகிறது: எங்கள் தரவுத்தொகுப்பில், எடுத்துக்காட்டாக, ஒவ்வொன்றும்
பணியாளரிடம் department_id உள்ளது, அது departments அட்டவணையை சுட்டிக்காட்டுகிறது. பார்க்க
திணைக்களத்தின் பெயர் (அதன் id மட்டுமல்ல) நாம் சேர வேண்டும்
இரண்டு அட்டவணைகள். இதைச் செய்யும் ஆபரேட்டரின் பெயர் JOIN.
அடிப்படை தொடரியல்
SELECT columns
FROM table_a
JOIN table_b ON table_a.x = table_b.y;ஆங்கிலத்தில் படிக்கவும்: "table_a எடுத்து, ஒவ்வொரு முறையும் இணைத்து அதனுடன் table_b ஐ இணைக்கவும்
table_a.x table_b.y"க்கு சமமான வரிசை. இதன் விளைவாக ** புதிய மெய்நிகர்
அட்டவணை இரண்டின் நெடுவரிசைகளுடன்.
-- For each employee, also show the name of their department:
SELECT employees.first_name,
employees.last_name,
departments.name AS dipartimento
FROM employees
JOIN departments ON employees.department_id = departments.id;ON க்குப் பின் உள்ள பகுதி இணைந்த நிலை என்று அழைக்கப்படுகிறது: இது என்ன சொல்கிறது
இயந்திரம் "இந்த இரண்டு வரிசைகளும் ஒரே விஷயத்தைச் சார்ந்தவை, அவற்றை வரிசைப்படுத்தவும்". இல்
பெரும்பாலான சந்தர்ப்பங்களில் இது முதன்மை விசைக்கும் வெளிநாட்டுக்கும் இடையிலான சமத்துவமாகும்
விசை (இங்கே departments.id மற்றும் employees.department_id).
INNER JOIN, விரிவாக
முழு முக்கிய சொல் INNER JOIN, ஆனால் JOIN அதன் தரநிலை
ஒத்த பெயர். "உள்" என்பது இரண்டிலும் பொருந்தக்கூடிய வரிசைகள் மட்டுமே
அட்டவணைகள் திரும்பப் பெறப்படுகின்றன:
- ஒரு பணியாளருக்கு
department_id = NULLஇருந்தால், அவர்கள் ** தோன்ற மாட்டார்கள்** முடிவு; - ஒரு துறைக்கு ஊழியர்கள் இல்லை என்றால், அது முடிவில் தோன்றாது.
தகுதியான நெடுவரிசைப் பெயர்கள்
இரண்டு அட்டவணைகள் ஒரே பெயரில் நெடுவரிசைகளைக் கொண்டிருக்கும் போது (இங்கே இரண்டுமே id, மற்றும்
இரண்டிலும் name உள்ளது, அதைப் பற்றி நீங்கள் நினைத்தால்), எந்த அட்டவணை என்பதைக் குறிப்பிட வேண்டும்
table.column என்று எழுதுவதன் மூலம் ஒரு நெடுவரிசை வருகிறது. நீண்ட பெயர்களைத் திரும்பத் திரும்பச் சொல்வதைத் தவிர்க்க,
மாற்றுப்பெயர்கள் பெரும்பாலும் பயன்படுத்தப்படுகின்றன (நீங்கள் அவற்றை தொகுதி 2 இல் பார்த்தீர்கள்):
SELECT e.first_name, e.last_name, d.name AS dipartimento
FROM employees AS e
JOIN departments AS d ON e.department_id = d.id;AS இங்கேயும் விருப்பமானது: FROM employees e அதே வேலை செய்கிறது.
முயற்சி செய்து பாருங்கள்
Ingegneria பிரிவில் உள்ள ஒவ்வொரு பணியாளருக்கும், முதல் பெயர் (first_name), கடைசி பெயர் (last_name) மற்றும் துறையின் நகரம் (departments.city) ஆகியவற்றைக் காட்டவும். மூன்று நெடுவரிசைகள், ஒரு பணியாளருக்கு ஒரு வரிசை.
குறிப்பைக் காட்டு
e.department_id மற்றும் d.id ஆகியவற்றுக்கு இடையே உள்ள சமத்துவத்துடன் ON நிபந்தனையை நிறைவுசெய்து, மூன்றாவது நெடுவரிசையாக d.city ஐத் தேர்ந்தெடுக்கவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
மதிப்பாய்வு பயிற்சி
மிலானோவை தளமாகக் கொண்ட ஒரு துறையில் பணிபுரியும் அனைத்து ஊழியர்களின் முதல் பெயர் (முதல்_பெயர்) மற்றும் கடைசி பெயர் (கடைசி_பெயர்) பட்டியலிடுங்கள். டிபார்ட்மெண்ட்ஸ்.சிட்டியில் வடிகட்டவும், துறையின் பெயரில் அல்ல.
குறிப்பைக் காட்டு
முந்தைய பயிற்சியைப் போலவே சேரவும், ஆனால் துறையின் பெயருக்குப் பதிலாக d.city = 'Milano' இல் வடிகட்டவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்