MySQL si unisce con Inner Join

Per questo tutorial utilizzeremo uno dei database di esempio che Mysql ci fornisce gratuitamente, si chiama Sakila, possiamo anche scaricare altri esempi dal sito ufficiale di Mysql.

Molte università li usano per testare MySQL e per la programmazione.
Quindi decomprimiamo il file scaricato e vedremo due file sakila-schema.sql contenente la struttura del database e sakila-data.sql A contenente i dati del campione.
L'obiettivo di questo database è fornire un ambiente di test, sia per sviluppare software che per testare query sql e quindi essere in grado di eseguire test con le possibilità offerte da MySQL. La struttura di Sakila è complessa, ha 1000 record e molteplici relazioni.
Il database Sakila contiene anche esempi di viste, stored procedure e trigger.
Questo database presuppone un negozio di noleggio film che potrebbe avere filiali e fornitori,
Il processo presuppone che per noleggiare un film, dobbiamo prima confermare che il film è disponibile o in stock, quindi dobbiamo verificare se il cliente esiste nel database e assegneremo il film o il DVD al cliente. Dobbiamo anche inserire la vendita nella tabella dei pagamenti. A seconda delle regole aziendali, potrebbe anche essere necessario verificare se il cliente ha un saldo dovuto.
Per verificare se il client esiste per nome possiamo fare una semplice query:
 seleziona customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) as Customer from customer where customer.first_name like 'Carlos% 
In questo tutorial ci concentreremo sulle query combinate eseguendo diversi esempi che verranno spiegati in dettaglio.

Clausola SQL Inner Join


Una clausola SQL JOIN viene utilizzata per combinare le righe di due o più tabelle, in base a un campo comune tra di esse.
INNER JOIN restituisce tutte le righe unite dalle tabelle che soddisfano la condizione di join.

Esempio A


Vogliamo sapere quali clienti hanno noleggiato film per questo abbiamo la tabella Clienti e la tabella Noleggio, quindi dobbiamo sapere quali clienti sono nella tabella Noleggio.
 seleziona rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date from rental INNER JOIN customer ON rental.customer_id = customer.customer_id 
Il risultato dell'esecuzione di questa clausola sarà il seguente:

In questo caso è lo stesso fare la query con un Where:
 select rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.rental_date from rental, customer where rental.customer_id = customer.customer_id 
La differenza è che l'inner join nell'ottimizzazione della query SQL sarà un po' più veloce.

Esempio B


Abbiamo due negozi o filiali che generano un elenco giornaliero dei noleggi scaduti in modo che i clienti possano essere contattati e chiesto di restituire il film.
Per generare questo elenco, dobbiamo cercare nella tabella di noleggio i film con una data di ritorno NULL, ovvero nessuna data e che la data di noleggio supera il tempo o il numero di giorni stabiliti che il cliente può conservare il film. Se questa condizione è soddisfatta, il cliente è in debito per il film e il nome del film dovrebbe essere mostrato nell'elenco insieme al nome, al numero di telefono e all'e-mail del cliente. Mostreremo anche se il film è stato pagato, in quale data è stato pagato e quanto è stato pagato.
 SELEZIONA CONCAT (customer.last_name, ',', customer.first_name) AS cliente, indirizzo.telefono, film.titolo, cliente.email, noleggio.data_ritorno, payment.data_pagamento, payment.amount FROM noleggio INNER JOIN cliente ON noleggio.customer_id = customer.customer_id INNER JOIN indirizzo ON customer.address_id = address.address_id INNER JOIN inventario ON rental.inventory_id = Inventory.inventory_id INNER JOIN film ON Inventory.film_id = film.film_id INNER JOIN pagamento ON payment.rental_id = rental.rental_id DOVE noleggio .return_date IS NULL AND rental_date + INTERVAL film.rental_duration GIORNO <CURRENT_DATE () 

Esempio C


Vogliamo scoprire qual è il cliente che noleggia più film per questo scriviamo la seguente clausola
 Seleziona CONCAT (customer.first_name, '', customer.last_name) come Customer, conta (rental.customer_id) come Total from Rental inner join customer on rental.customer_id = customer.customer_id raggruppa per rental.customer_id ***** per totale desc 
Quindi possiamo fare molti test con Mysql per testare le prestazioni. In un altro tutorial avanzeremo in query più complesse:

Esempio C


Vogliamo scoprire qual è il cliente che noleggia più film per questo scriviamo la seguente clausola
 Seleziona CONCAT (customer.first_name, '', customer.last_name) come Customer, conta (rental.customer_id) come Total from Rental inner join customer on rental.customer_id = customer.customer_id raggruppa per rental.customer_id ***** per totale desc 
Quindi possiamo fare molti test con MySQL per testare le prestazioni. In un altro tutorial avanzeremo in query più complesse.

Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave