మాడ్యూల్ పాఠాలు (1/4)
మూడు లేదా అంతకంటే ఎక్కువ పట్టికలలో చేరారు
మాడ్యూల్ 3లో మీరు రెండు పట్టికలను చేరారు. వాస్తవ ప్రపంచంలో డేటా దాదాపు
విదేశీ కీల ద్వారా లింక్ చేయబడిన మూడు లేదా అంతకంటే ఎక్కువ పట్టికలలో ఎల్లప్పుడూ చెల్లాచెదురుగా ఉంటుంది: కు
మీరు సంబంధాల గొలుసును దాటవలసిన వ్యాపార ప్రశ్నకు సమాధానం ఇవ్వండి.
బహుళ-పట్టిక JOIN సరిగ్గా అదే చేస్తుంది.
ఈ మాడ్యూల్ నుండి మేము ecommerce డేటాసెట్ని ఉపయోగిస్తాము (కస్టమర్లు,
వర్గాలు, ఉత్పత్తులు, ఆర్డర్లు, ఆర్డర్ అంశాలు, సమీక్షలు). మీరు దీని నుండి అన్వేషించవచ్చు
డేటాసెట్ నుండి ecommerceని ఎంచుకోవడం ద్వారా ప్లేగ్రౌండ్
పికర్.
వాక్యనిర్మాణం: JOINల గొలుసు
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 గొలుసుకు "లింక్"ని జోడిస్తుంది: ఇంజిన్ ఇంటర్మీడియట్ను తీసుకుంటుంది
మునుపటి 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 గొలుసుల ద్వారా సంకలనాలు
Multi 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 (స్టేటస్ = 'డెలివరీ'), మోస్ట్రా ఇమెయిల్ డెల్ క్లయింట్, నోమ్ డెల్ ప్రోడోట్టో మరియు క్వాంటిటా. ట్రె కొలోన్. ఆర్డినా పర్ ఐడి ఆర్డిన్ క్రెసెంట్ ఇ ఐడి ప్రోడోట్టో క్రెసెంట్.
సూచనను చూపించు
మూడు చేరికలు: ఆర్డర్లు→ customer_idలో కస్టమర్లు, ఆర్డర్లు→order_items on order_id, order_items→product_idలో ఉత్పత్తులు.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం సమీక్షించండి
ప్రతి స్పెసా టోటల్కి టాప్ 3 క్లయింటీలు (సొమ్మ డి పరిమాణం * యూనిట్_ధర) సుయి సోలి ఆర్డిని కన్సెగ్నటీ. డ్యూ కాలన్: ఇమెయిల్ మరియు మొత్తం. మొత్తం తగ్గుదలకు ఆర్డినా, పరిమితి a 3.
సూచనను చూపించు
నాన్ టి సర్వ్ JOIN ప్రోడక్ట్లు: ఆర్డర్_ఐటెమ్లలో పరిమాణం మరియు యూనిట్_ధర సోనో గిà.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది