தொகுதி பாடங்கள் (1/4)
மூன்று அல்லது அதற்கு மேற்பட்ட டேபிள்களில் சேர்கிறது
தொகுதி 3 இல் நீங்கள் இரண்டு அட்டவணைகளை இணைத்துள்ளீர்கள். நிஜ உலகில் தரவு கிட்டத்தட்ட உள்ளது
வெளிநாட்டு விசைகளால் இணைக்கப்பட்ட மூன்று அல்லது அதற்கு மேற்பட்ட அட்டவணைகள் முழுவதும் எப்போதும் சிதறியிருக்கும்: to
நீங்கள் உறவுகளின் சங்கிலியைக் கடக்க வேண்டிய வணிகக் கேள்விக்கு பதிலளிக்கவும்.
பல அட்டவணை JOIN அதைத்தான் செய்கிறது.
இந்த தொகுதியிலிருந்து நாம் ecommerce தரவுத்தொகுப்பைப் பயன்படுத்துவோம் (வாடிக்கையாளர்கள்,
வகைகள், தயாரிப்புகள், ஆர்டர்கள், ஆர்டர் உருப்படிகள், மதிப்புரைகள்). நீங்கள் அதை ஆராயலாம்
தரவுத்தொகுப்பில் இருந்து ecommerce என்பதைத் தேர்ந்தெடுப்பதன் மூலம் [விளையாட்டு மைதானம்](/sql/விளையாட்டு மைதானம்/)
எடுப்பவர்.
தொடரியல்: சேர்களின் சங்கிலி
SELECT colonne
FROM tabella_a
JOIN tabella_b ON tabella_a.x = tabella_b.y
JOIN tabella_c ON tabella_b.z = tabella_c.w
[JOIN tabella_d ON …]
…;ஒவ்வொரு JOIN சங்கிலியில் ஒரு "இணைப்பை" சேர்க்கிறது: இயந்திரம் இடைநிலையை எடுக்கும்
முந்தைய இணைப்புகளின் முடிவு மற்றும் அடுத்த அட்டவணையை அதனுடன் இணைக்கிறது.
-- Per ogni riga d'ordine: cliente, prodotto e quantità.
SELECT c.email,
p.name AS prodotto,
oi.quantity
FROM orders AS o
JOIN customers AS c ON o.customer_id = c.id
JOIN order_items AS oi ON oi.order_id = o.id
JOIN products AS p ON oi.product_id = p.id;மூன்று JOINவி, நான்கு அட்டவணைகள். முடிவில் order_items ஒன்றுக்கு ஒரு வரிசை உள்ளது — ஒவ்வொன்றும்
ஒவ்வொரு வரிசையிலும் உள்ள தயாரிப்பு - வாடிக்கையாளர் மின்னஞ்சல் மற்றும் தயாரிப்பு பெயர் ஆகியவற்றால் செறிவூட்டப்பட்டது.
தருக்க ஒழுங்கு
இயந்திரம் இடமிருந்து வலமாக அட்டவணைகளுடன் இணைகிறது. ஒரு JOIN நிபந்தனை முடியும்
மேலே ஏற்கனவே அறிமுகப்படுத்தப்பட்ட எந்த அட்டவணையையும் குறிப்பிடவும். வாசிப்புத்திறனுக்காக:
- கேள்வியின் "முக்கிய அட்டவணையை" முதலில் வைக்கவும் (இங்கே
orders); - பின்தொடர்வதன் மூலம் நீங்கள் பார்வையிடும் வரிசையில் மற்றவற்றைச் சேர்க்கவும் உறவுகள்.
JOIN சங்கிலிகளின் மீது திரட்டப்பட்டவை
பல JOINகள் GROUP BY உடன் இணைந்து அறிக்கைகளை உருவாக்குகின்றன:
-- Spesa totale per cliente (solo ordini consegnati):
SELECT c.email,
SUM(oi.quantity * oi.unit_price) AS total
FROM customers AS c
JOIN orders AS o ON o.customer_id = c.id
JOIN order_items AS oi ON oi.order_id = o.id
WHERE o.status = 'delivered'
GROUP BY c.email
ORDER BY total DESC;உங்களுக்கு இங்கே JOIN products தேவையில்லை: உங்களுக்குத் தேவையான அனைத்தும் (quantity,
unit_price) ஏற்கனவே order_items இல் உள்ளது. கட்டைவிரல் விதி: ** அட்டவணைகளைச் சேர்க்க வேண்டாம்
நீங்கள் பயன்படுத்த வேண்டாம்** — அவை செயல்திறன் மற்றும் வாசிப்புத்திறனை பாதிக்கின்றன.
நீங்களே முயற்சி செய்து பாருங்கள்
ஒவ்வொரு ogni riga d'ordine degli ordini consegnati (நிலை = 'வழங்கப்பட்டது'), மோஸ்ட்ரா மின்னஞ்சல் டெல் வாடிக்கையாளர், பெயர் டெல் புரோடோட்டோ இ குவாண்டிடா. ட்ரே கொலோன். ஒர்டினா பெர் ஐடி ஆர்டின் கிரெசென்ட் இ ஐடி புரோடோட்டோ கிரெசென்ட்.
குறிப்பைக் காட்டு
மூன்று சேர்ப்புகள்: ஆர்டர்கள்→ வாடிக்கையாளர்_ஐடியில் வாடிக்கையாளர்கள், ஆர்டர்கள்→ஆர்டர்_ஐடியில் ஆர்டர்கள்_உருப்படிகள், ஆர்டர்_ஐடங்கள்→ தயாரிப்பு_ஐடியில் தயாரிப்புகள்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
மதிப்பாய்வு பயிற்சி
மொத்தத்தில் முதல் 3 கிளையண்டுகள் (சொம்மா டி அளவு * யூனிட்_விலை) sui soli ordini consegnati. டூ காலன்: மின்னஞ்சல் மற்றும் மொத்தம். மொத்த வீழ்ச்சிக்கு ஆர்டினா, வரம்பு a 3.
குறிப்பைக் காட்டு
நான் சேர் தயாரிப்புகள்: அளவு மற்றும் அலகு_விலை sono già ஆர்டர்_பொருட்கள்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்