Esercitazione: Seconda parte - JOIN - Query SQL su due tabelle


Database OS, Marca, Smartphone


Per la nostra esercitazione SQL, è stato creato e popolato un database. Lo script per importarlo è al seguente link.
Le entità sono tre: Marca (Samsung, Apple, HTC, etc.), OS (Android, iOS, etc.), Smartphone (Galaxy S4, iPhone 5S, etc).

Provare ad eseguire le query richieste.


Struttura e Contenuto Database

es2_smartphone (id, nome, ram, cpu, display_ppi, display_size, display_resolution, dimensioni, peso, note, id_marca, id_os);
es2_os (id, descrizione, company, open_source);
es2_marca (id, brand, nazionalita);

 









Prova la tua query SQL:


SELECT nome, brand FROM es2_smartphone,es2_marca;



Capire una JOIN tra due tabelle

JOIN tabella es2_smartphone e es2_marca

Vogliamo conoscere la marca degli smartphone presenti nel database.
Proviamo ad eseguire la query inserita nel riquadro, ovvero:

SELECT nome, brand
FROM es2_smartphone, es2_marca

Senza aggiungere nessun'altra condizione.
Abbiamo 12 occorrenze nella tabella es2_marca e 19 telefoni inseriti nella tabella es2_smartphone. Il risultato della query appena fatta è di 12x19 righe. Questo risultato viene chiamato prodotto cartesiano, ovvero, ad ogni singola riga della prima tabela indicata, viene affiancata ogni occorrenza della seconda tabella. Ovviamente, non è il risultato che volevamo!


Una JOIN corretta

Unire due tabelle tramite le CHIAVI

Per prendere un'occorrenza della tabella es2_smartphone e la riga corrispondente nella tabella es2_marca, dobbiamo specificare le chiavi che le legano.
La primary KEY di es2_marca deve legarsi alla tabella es2_smartphone tramite la FOREIGN KEY id_marca.
Ci sono due modi per farlo, perfettamente equivalenti.

Primo metodo: All'interno della clausola FROM specificare che la prima tabella è in INNER JOIN con la seconda tabella ON specificare l'uguaglianza tra la chiave primaria e la chiave esterna.

Secondo metodo: Nel FORM si specificano le due tabelle e all'interno della clausola WHERE si specifica l'uguaglianza tra la chiave primaria e la chiave esterna.

Esempio Primo metodo: SELECT nome, brand FROM es2_smartphone INNER JOIN es2_marca ON es2_marca.id = id_marca;

Esempio Secondo metodo: SELECT nome, brand FROM es2_smartphone, es2_marca WHERE es2_marca.id = id_marca;

Provare gli esempi in tutti e due i casi e proseguire con l'esercitazione utilizzando il metodo che si ritiene di aver compreso meglio!










Prova la tua query SQL:


SELECT nome, brand FROM es2_smartphone,es2_marca;









Prova la tua query SQL:


SELECT nome, brand FROM es2_smartphone,es2_marca;



Prima Query in JOIN

Elenco degli smartphone e il loro sistema operativo.

Ricordare: Rispetto al punto precedente, cambiano le entità su cui effettuare la JOIN. Procedere sulle due tabelle che contengono le informazioni che ci interessano: es2_smartphone e es2_os.

Esercizio extra: Ordinare la query per la descrizione del sistema operativo.


Seconda Query in JOIN

Elenco degli smartphone 'Android' ordinati per il peso.

Ricordare: Riguardare la prima esercitazione e provare a legare le tabelle smartphone e os e subito dopo a filtrare es2_os con il fatto che il brand deve essere Android e aggiungere la clausola ORDER BY.

Esercizio extra: Modificare la query per trovare gli smartphone 'Samsung' ordinati per il peso.



Prova la tua query SQL:


SELECT nome, brand FROM es2_smartphone,es2_marca;







Prova la tua query SQL:


SELECT nome, brand FROM es2_smartphone,es2_marca;



Terza Query in JOIN

L'elenco degli smartphone con la descrizione del sistema operativo e del brand

Ricordare: La JOIN su due o più tabelle segue sempre i concetti fondamentali.
Indicare le tabelle da cui devono essere estratte le informazioni e poi legarle tramite le chiavi.
In questo caso è una query in JOIN su tre tabelle.


Terza parte - COUNT, GROUP, SUM