தொகுதி பாடங்கள் (1/3)
CTE களுக்கான அறிமுகம் (உடன்)
CTE களுக்கான அறிமுகம் (உடன்)
விரைவில் அல்லது பின்னர் இது அனைவருக்கும் நடக்கும்: நீங்கள் ஒரு திரட்டலின் முடிவின் அடிப்படையில் தரவை வடிகட்ட வேண்டும், பின்னர் அந்த வடிப்பானை எடுத்து மற்றொரு ஒருங்கிணைந்த வினவலுடன் இணைக்கவும். நீங்கள் SELECT SELECT க்குள் எழுதத் தொடங்குகிறீர்கள், இது மற்றொரு SELECT இன் FROM இல் முடிகிறது.
விளைவு? Spaghetti SQL, எந்த மனிதனும் படிக்க முடியாத வினவல்.
CTEகள் (பொது அட்டவணை வெளிப்பாடுகள்) இந்த குழப்பத்தை நீங்கள் அவிழ்க்க அனுமதிக்கும். நீங்கள் அவற்றை WITH முக்கிய சொல்லைக் கொண்டு செயல்படுத்துகிறீர்கள், இது தற்காலிக பெயரிடப்பட்ட வினவல்களை வரையறுத்து, இறுதி வினவலில் அவற்றை "மெய்நிகர் அட்டவணைகளாக" மீண்டும் பயன்படுத்த அனுமதிக்கிறது.
அடிப்படை தொடரியல்
WITH premium_customers AS (
SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 1000
)
SELECT customers.first_name, premium_customers.total_spent
FROM customers
JOIN premium_customers ON customers.id = premium_customers.customer_id;நீங்கள் பார்க்கிறபடி, கீழே உள்ள முக்கிய வினவல் premium_customers இலிருந்து உண்மையான அட்டவணையைப் போல் உள்ளது! மேலும் இது உள்ளமைக்கப்பட்ட துணை வினவல்களுடன் கூடிய மெகா உள்-இணைப்பை விட மிகவும் படிக்கக்கூடியது.
நாங்கள் மிகவும் விலையுயர்ந்த தயாரிப்புகளை விரும்புகிறோம். 'விலை > 500' என்ற 'தயாரிப்பு'களில் இருந்து 'ஐடி' மற்றும் 'விலை' என்பதைத் தேர்ந்தெடுக்க 'luxury_products' எனப்படும் CTE ஐப் பயன்படுத்தவும். இந்த CTE இல் ஒரு முக்கிய வினவலை இயக்கி அனைத்தையும் (*) காட்டவும்.
குறிப்பைக் காட்டு
luxury_products AS (...) எனத் தொடங்கி, luxury_products இல் இருந்து * தேர்ந்தெடுக்கவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
மதிப்புரைகளை எழுதும் பயனர்களைக் கண்டறிய விரும்புகிறோம். 'விமர்சனங்களில்' இருந்து தனித்துவமான (DISTINCT) 'customer_id' மதிப்புகளைப் பிரித்தெடுக்கும் CTE 'மதிப்பாய்வு செய்பவர்களை' உருவாக்கவும். பின்னர் 'வாடிக்கையாளர்கள்' அட்டவணையில் இருந்து 'id', 'first_name', 'last_name' ஆகியவற்றை பிரித்தெடுத்து, ஐடியில் உள்ள 'மதிப்பாய்வு செய்பவர்கள்' CTE உடன் \`JOIN\`.
குறிப்பைக் காட்டு
மதிப்பாய்வாளர்களுடன் (மதிப்புரைகளில் இருந்து DISTINCT customer_id ஐத் தேர்ந்தெடுக்கவும்) வாடிக்கையாளர்களிடமிருந்து ஐடி, முதல்_பெயர், கடைசி_பெயர் ஆகியவற்றைத் தேர்ந்தெடுக்கவும் customers.id = reviewers.customer_id;
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்