Unisci 2 Tabelle
Abbiamo attirato l'attenzione di un'azienda che possiede un piccolo negozio online. Hanno 2 tabelle che sono correlate 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 sul sito web, insieme a una breve descrizione per ciascuna categoria.
Ecco come appare la tabella category
:
Il nostro primo compito è unire queste due tabelle per scoprire quanti prodotti ci sono in ciascuna categoria. Useremo un'istruzione JOIN
per ottenere questo risultato.
Prima di immergerci nel compito, cerchiamo di capire cos'è un'istruzione JOIN
e come funziona.
Per unire due tabelle, devono condividere una colonna comune. Vediamo come funziona JOIN
utilizzando le tabelle employees
e department
. La loro colonna comune è employees.department
e departments.name
.
Nota
Quando si scrivono colonne da queste tabelle, inizia con il nome della tabella, aggiungi un punto, e poi il nome della colonna. Questo aiuta a mantenere il codice chiaro, specialmente quando le tabelle hanno colonne con lo stesso nome. Indica esattamente a SQL quale tabella e colonna intendi.
Ecco il compito di recuperare il salario totale per i dipendenti in ciascun tipo di dipartimento (tech
/non-tech
).
La query per svolgere questo compito sarà simile a questa:
SELECT department.type, SUM(employees.salary) AS total_salary FROM employees JOIN department ON employees.department = department.name GROUP BY department.type
Analizziamo come abbiamo utilizzato JOIN
nella nostra query:
Nella parte
SELECT
, elenchiamo le colonne che vogliamo da entrambe le tabelle, assicurandoci di includere il nome della tabella per chiarezza;Nella parte
JOIN
, specifichiamo la tabella da unire e la colonna comune che le collega. Qui, sonoemployees.department
edepartment.name
;Poi raggruppiamo i dati per
type
per calcolare il salario totale usando la funzioneSUM()
.
Se questo sembra complesso, ecco una semplice sintassi per usare JOIN
:
sql
Nota
A differenza della clausola
UNION
, l'istruzioneJOIN
ci permette di combinare intere tabelle, non solo le colonne che condividono. Inoltre, conJOIN
, non c'è bisogno di sottoquery come conUNION
.
Swipe to start coding
Devi 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 fare ciò, devi calcolare la somma della colonna product.amount
.
Usa l'alias total_amount
per questa colonna.
Alla fine della tua query, ordina il risultato per la colonna total_amount
in ordine crescente.
Nella risposta, dovresti avere 2 colonne: category.name
e total.amount
.
Istruzioni Brevi
- Recupera la colonna
category.name
e la somma della colonnaproduct.amount
dalla tabellaproduct
. - Assegna l'alias
total_amount
alla seconda colonna. - Unisci la tabella
category
usando un'istruzioneJOIN
. - Abbina 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!