முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 3 · பாடம் 2 இன் 4பாடத்திட்டத்தில் 10/57~10 min
தொகுதி பாடங்கள் (2/4)

எல்லாவற்றையும் இடதுபுறத்தில் வைத்திருத்தல்: இடதுபுறம் சேர்

முந்தைய பாடத்தில் உள்ள INNER JOIN ஒரு முக்கியமான பக்க விளைவைக் கொண்டுள்ளது: அது ** பொருத்தம் இல்லாத வரிசைகளை இறக்குகிறது**. ஒரு பணியாளருக்கு எந்த துறையும் இல்லை என்றால் (department_id என்பது NULL), அவை முடிவில் இருந்து மறைந்துவிடும்.

சில நேரங்களில் நீங்கள் விரும்புவது இதுதான். பெரும்பாலும், இருப்பினும், அது இல்லை: ஒரு HR அறிக்கையில் துறை இல்லாதவர்கள் உட்பட அனைத்து பணியாளர்களையும் பார்ப்பது அவசியம், மற்றும் அவர்கள் யார் என்று தெரியும். அதுதான் LEFT JOIN (முழுமையாக, LEFT OUTER JOIN).

இது எப்படி வேலை செய்கிறது

SQL
SELECT columns
FROM   table_a
LEFT JOIN table_b ON table_a.x = table_b.y;

ஆங்கிலத்தில் படிக்கவும்: "table_a இன் அனைத்து வரிசைகளையும் வைத்திருங்கள்; ஒவ்வொன்றும் முயற்சிக்கவும் table_b இலிருந்து ஒரு வரிசையை இணைக்கவும்; பொருந்தவில்லை என்றால், நெடுவரிசைகளை நிரப்பவும் table_b உடன் NULL".

முக்கிய சொல் LEFT: இதன் பொருள் "இடது அட்டவணை", அதாவது எழுதப்பட்ட ஒன்று FROMக்குப் பிறகு. அதன் அனைத்து வரிசைகளும் எப்போதும் உயிர்வாழும்.

SQL
-- All employees, including those without a department:
SELECT e.first_name,
       e.last_name,
       d.name AS dipartimento
FROM   employees   AS e
LEFT JOIN departments AS d ON e.department_id = d.id;

எங்கள் தரவுத்தொகுப்பில் இந்த வினவல் 10 வரிசைகள் (தலா ஒரு பணியாளர்) வழங்கும். ஆண்ட்ரியா department_id = NULL கொண்ட கோஸ்டா, dipartimento = NULL உடன் தோன்றுகிறார் மறைவதற்கு பதிலாக.

"பொருத்தம் இல்லை" வரிசைகளைக் கண்டறிதல்

மிகவும் பயனுள்ள விளைவு: ஒரு நெடுவரிசையில் IS NULL உடன் வடிகட்டுவதன் மூலம் வலதுபுறம் உள்ள அட்டவணையில் நீங்கள் சரியாக வரிசைகளைக் காணலாம் ** பொருத்தம் இல்லாமல்**:

SQL
-- Orphan employees: no department assigned
SELECT e.first_name, e.last_name
FROM   employees   AS e
LEFT JOIN departments AS d ON e.department_id = d.id
WHERE  d.id IS NULL;

இந்த தந்திரம் நிஜ உலகில் எல்லா நேரத்திலும் பயன்படுத்தப்படுகிறது: "எனது ஆர்டர்களைக் கண்டுபிடி இல்லை வாடிக்கையாளர்", "மதிப்புரைகள் இல்லாத தயாரிப்புகள்", "எப்போதும் பதிவு செய்யாத பயனர்கள் இல்".

முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#sql.m3.l2.e1
முயற்சிகள்: 0ஏற்றுகிறது…

ஒதுக்கப்பட்ட துறை இல்லாத ஊழியர்களின் முதல் பெயர் (முதல்_பெயர்) மற்றும் கடைசி பெயர் (இறுதி_பெயர்) திரும்பவும். ஒன்று அல்லது அதற்கு மேற்பட்ட வரிசைகள், இரண்டு நெடுவரிசைகள்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

d.id IS NULL உடன் WHERE ஐ முடிக்கவும் - LEFT JOIN பொருந்தக்கூடிய துறையைக் கண்டறியாத வரிசைகள் உங்களுக்குத் தேவை.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#sql.m3.l2.e2
முயற்சிகள்: 0ஏற்றுகிறது…

அனைத்து துறைகளையும் (departments.name) பட்டியலிடவும், அவற்றுக்கு அடுத்ததாக பணியாளர்களின் எண்ணிக்கை, பணியாளர்கள் இல்லாத துறைகள் உட்பட (அவற்றுக்கு 0 ஐக் காட்டு). உதவிக்குறிப்பு: துறைகளில் இருந்து தொடங்கி, ஊழியர்களுடன் இடதுபுறம் இணைந்து, பின்னர் குழுவாக + COUNT.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

எந்தப் பொருத்தமும் இல்லாதபோது 0 எண்ணுவதற்கு COUNT(e.id) (COUNT(*) அல்ல) ஐப் பயன்படுத்தவும்: NULL உடன் இடதுபுறம் சேரும் வரிசையின் காரணமாக COUNT(*) 1ஐக் கணக்கிடும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்