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

வெளிப்புற இணைப்பு: "இடைவெளிகளை" கண்டறிதல்

தொகுதி 3 இல் நீங்கள் LEFT JOIN பார்த்தீர்கள்: அனைத்து வரிசைகளையும் இடதுபுறத்தில் வைத்திருங்கள். வலதுபுறத்தில் பொருத்தம் இல்லாமல் (NULL ஆக மாறும்). இந்த அத்தியாயத்தில் நாம் RIGHT JOIN மற்றும் FULL OUTER JOIN உடன் கருவித்தொகுப்பை விரிவுபடுத்தவும், நாங்கள் கற்றுக்கொள்கிறோம் தரவுகளில் உள்ள "துளைகள்" கண்டுபிடிக்க அவற்றை எவ்வாறு பயன்படுத்துவது: ஒரு அட்டவணையில் உள்ள வரிசைகள் மற்றொன்றில் இணை இல்லை.

மூன்று வகையான OUTER JOIN

SQL
A LEFT  JOIN B  ON …  -- tutte le righe di A, con o senza match in B
A RIGHT JOIN B  ON …  -- tutte le righe di B, con o senza match in A
A FULL  JOIN B  ON …  -- tutte le righe di A *e* di B; NULL dove non c'è match

A RIGHT JOIN B எப்பொழுதும் B LEFT JOIN A என மீண்டும் எழுதப்படலாம் ON: இது படிக்கக்கூடியது. பல பாணிகள் (இந்த பாடநெறி உட்பட) நிலைத்தன்மைக்காக எப்போதும் LEFT JOIN ஐப் பயன்படுத்த விரும்புகிறேன்.

"எதிர்ப்பு இணை" முறை: காணாமல் போனவற்றைக் கண்டறிதல்

LEFT JOIN இன் மிகவும் பொதுவான பயன்பாடானது "தரவில் உள்ள தரவை வளப்படுத்துவது அல்ல. வலது", ஆனால் ** இடதுபுறத்தில் பொருத்தம் இல்லாத வரிசைகளைக் கண்டறியவும் வலது**. இது ஒரு anti-join என்று அழைக்கப்படுகிறது:

SQL
-- Prodotti senza nessuna recensione:
SELECT p.id, p.name
FROM   products p
LEFT JOIN reviews r ON r.product_id = p.id
WHERE  r.id IS NULL
ORDER BY p.id;

வடிவ தர்க்கம்:

  1. LEFT JOIN ஒவ்வொரு தயாரிப்பின் மதிப்புரைகள் ஏதேனும் இருந்தால் இணைக்கிறது;
  2. மதிப்புரைகள் இல்லாத தயாரிப்புகளுக்கு, அனைத்து r நெடுவரிசைகளும் NULL;
  3. WHERE r.id IS NULL அந்த தயாரிப்புகளை மட்டும் வைத்திருக்கிறது.

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

முழு வெளியில் சேரவும்

FULL OUTER JOIN பொருத்தம் இல்லாமல் இருபக்கமும் வைத்திருக்கிறது. இது அரிதாகவே பயன்படுத்தப்படுகிறது, பொதுவாக தரவு ஒருமைப்பாடு சோதனைகளுக்கு:

SQL
SELECT c.id AS customer_id, o.id AS order_id
FROM   customers c
FULL OUTER JOIN orders o ON o.customer_id = c.id
WHERE  c.id IS NULL OR o.id IS NULL;

c.id IS NULL உள்ள வரிசைகள் அனாதை ஆர்டர்களாக இருக்கும் (acustomer_id அது customers இல் இல்லை). o.id IS NULL உள்ளவர்கள் வாடிக்கையாளர்கள் உத்தரவு இல்லாமல். எங்கள் தரவுத்தொகுப்பில் வெளிநாட்டு விசைகள் அனாதை இல்லை என்று உத்தரவாதம் அளிக்கின்றன ஆர்டர்கள் உள்ளன; ஆர்டர்கள் இல்லாத வாடிக்கையாளர்கள் மட்டுமே எஞ்சியுள்ளனர்.

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

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

ட்ரோவா டுட்டி ஐ ப்ரோடோட்டி சே நோன் ஹன்னோ மை ரிஸ்வுடோ உனா ரிசென்சியோன். மோஸ்ட்ரா சோலோ லா கொலோனா பெயர். பெயருக்கு ஓர்டினா.

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

பேட்டர்ன் ஆண்டி-சேய்ன்: LEFT JOIN மதிப்புரைகள் su product_id, poi எங்கே r.id NULL.

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

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

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

ட்ரோவா நான் கிளையன்டி சே நோன் ஹன்னோ மாய் ஆர்டினாடோ நுல்லா. மோஸ்ட்ரா மின்னஞ்சல். மின்னஞ்சலுக்கு ஓர்டினா.

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

Stesso மாதிரி dell'esercizio முன்னோடி, ma fra வாடிக்கையாளர்கள் மற்றும் ஆர்டர்கள்.

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