single
Join di 2 Tabelle
Scorri per mostrare il menu
Hai attirato l'attenzione di un'azienda che possiede un piccolo negozio online. Hanno 2 tabelle che sono collegate tra loro. La prima tabella contiene informazioni sui prodotti venduti nel negozio online.
Ecco come appare la tabella product:
La seconda tabella contiene le categorie di prodotti presenti sul sito, insieme a una breve descrizione per ciascuna categoria.
Ecco come appare la tabella category:
Il primo compito consiste nell'unire queste due tabelle per scoprire quanti prodotti ci sono in ciascuna categoria. Verrà utilizzata un'istruzione JOIN per ottenere questo risultato.
Prima di affrontare il compito, è importante comprendere cos'è un'istruzione JOIN e come funziona.
JOIN in SQL è un'operazione che combina le righe di due o più tabelle in base a una colonna correlata tra di esse. JOIN consente di ottenere dati da più tabelle in un'unica query, semplificando l'analisi e l'elaborazione dei dati correlati.
Per unire due tabelle, è necessario che condividano una colonna in comune. Per le tabelle, questo collegamento condiviso è product.category_id e category.id.
Quando si scrivono colonne da queste tabelle, iniziare con il nome della tabella, aggiungere un punto e poi il nome della colonna. Questo aiuta a mantenere il codice chiaro, soprattutto quando le tabelle hanno colonne con lo stesso nome. Indica a SQL esattamente a quale tabella e colonna ci si riferisce.
Ecco come funziona JOIN in pratica. Immagina di voler recuperare il prezzo medio dei prodotti per ogni nome di categoria.
La query per ottenere questo risultato è la seguente:
1234SELECT category.name, AVG(product.price) AS average_price FROM product JOIN category ON product.category_id = category.id GROUP BY category.name
Ecco una spiegazione di come abbiamo utilizzato JOIN nella nostra query:
- Nella parte
SELECT, vengono elencate le colonne desiderate da entrambe le tabelle, includendo il nome della tabella per maggiore chiarezza; - Nella parte
JOIN, viene specificata la tabella da unire (category) e le colonne comuni che le collegano (product.category_id = category.id); - Successivamente, i dati vengono raggruppati per
category.nameper calcolare il prezzo medio utilizzando la funzioneAVG().
Se questo sembra complesso, ecco una semplice sintassi per utilizzare JOIN:
SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
A differenza della clausola UNION, l'istruzione JOIN consente di combinare intere tabelle, non solo le colonne che hanno in comune. Si noti che UNION non richiede necessariamente sottoquery — le sottoquery sono necessarie solo se si desidera filtrare o raggruppare il risultato combinato. In molti casi, è possibile utilizzare UNION direttamente tra due istruzioni SELECT senza sottoquery.
Scorri per iniziare a programmare
È necessario unire le due tabelle: category e product. Le colonne comuni per queste due tabelle sono product.category_id e category.id.
Il tuo compito è trovare la quantità totale di prodotti in ogni categoria. Per farlo, devi calcolare la somma della colonna product.amount.
Utilizza l'alias total_amount per questa colonna.
Alla fine della query, ordina il risultato in base alla colonna total_amount in ordine crescente.
Nella risposta, dovresti avere 2 colonne: category.name e total.amount.
Istruzioni sintetiche
- Recupera la colonna
category.namee la somma della colonnaproduct.amountdalla tabellaproduct. - Assegna l'alias
total_amountalla seconda colonna. - Unisci la tabella
categoryutilizzando una clausolaJOIN. - Collega le tabelle sulla colonna comune
product.category_id = category.id. - Raggruppa i risultati per
category.name. - Ordina i risultati per
total_amount.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione