MySQL joint avec Inner Join

Pour ce tutoriel, nous utiliserons l'une des bases de données d'exemples que Mysql nous fournit gratuitement, elle s'appelle Sakila, nous pouvons également télécharger d'autres exemples sur le site officiel de Mysql.

De nombreuses universités les utilisent pour tester MySQL et pour programmer.
Ensuite, nous décompressons le fichier téléchargé et nous verrons deux fichiers schéma-sakila.sql contenant la structure de la base de données et sakila-data.sql A contenant les exemples de données.
L'objectif de cette base de données est de fournir un environnement de test, soit pour développer des logiciels, soit pour tester des requêtes sql et ainsi pouvoir effectuer des tests avec les possibilités offertes par MySQL. La structure de Sakila est complexe, elle compte 1000 enregistrements et de multiples relations.
La base de données Sakila contient également des exemples de vues, de procédures stockées et de déclencheurs.
Cette base de données suppose un magasin de location de films qui peut avoir des succursales et des vendeurs,
Le processus suppose que pour louer un film, nous devons d'abord confirmer que le film est disponible ou en stock, puis nous devons vérifier si le client existe dans la base de données et nous attribuerons le film ou le DVD au client. Nous devons également insérer la vente dans la table de paiement. Selon les règles commerciales, il peut également être nécessaire de vérifier si le client a un solde impayé.
Pour vérifier si le client existe par son nom, nous pouvons effectuer une simple requête :
 sélectionnez customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) comme client du client où customer.first_name comme 'Carlos% 
Dans ce tutoriel, nous allons nous concentrer sur les requêtes combinées en réalisant plusieurs exemples qui seront expliqués en détail.

Clause de jointure interne SQL


Une clause SQL JOIN est utilisée pour combiner des lignes de deux ou plusieurs tables, en fonction d'un champ commun entre elles.
JOINTURE INTERNE renvoie toutes les lignes jointes des tables qui remplissent la condition de jointure.

Exemple A


Nous voulons savoir quels clients ont loué des films pour cela, nous avons la table Client et la table Location, donc nous devons savoir quels clients sont dans la table Location.
 sélectionnez rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date de la location INNER JOIN customer ON rental.customer_id = customer.customer_id 
Le résultat de l'exécution de cette clause sera le suivant :

Dans ce cas, c'est la même chose de faire la requête avec un Where :
 sélectionnez rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date de la location, client où rental.customer_id = customer.customer_id 
La différence est que la jointure interne dans l'optimisation de la requête SQL sera un peu plus rapide.

Exemple B


Nous avons deux magasins ou succursales qui génèrent une liste quotidienne des locations en retard afin que les clients puissent être contactés et invités à retourner le film.
Pour générer cette liste, il faut rechercher dans la table de location les films dont la date de retour est NULL, c'est-à-dire sans date et dont la date de location dépasse le temps ou le nombre de jours établis que le client peut conserver le film. Si cette condition est remplie, alors le client est endetté pour le film et le nom du film doit apparaître dans la liste avec le nom, le numéro de téléphone et l'e-mail du client. Nous montrerons également si le film est payé, à quelle date il a été payé et combien a été payé.
 SELECTIONNER CONCAT (client.nom_famille, ',', client.prénom_nom) AS client, adresse.téléphone, film.titre, client.email, location.date_de retour, payment.payment_date, payment.amount FROM location INNER JOIN customer ON rental.customer_id = customer.customer_id INNER JOIN address ON customer.address_id = address.address_id INNER JOIN Inventory ON rental.inventory_id = Inventory.inventory_id INNER JOIN film ON Inventory.film_id = film.film_id INNER JOIN payment ON payment.rental_id = rental.rental_id O location .return_date EST NULL ET rental_date + INTERVAL film.rental_duration JOUR <CURRENT_DATE () 

Exemple C


Nous voulons savoir quel est le client qui loue le plus de films pour cela, nous écrivons la clause suivante
 Sélectionnez CONCAT (customer.first_name, '', customer.last_name) en tant que client, comptez (rental.customer_id) en tant que total de la location interne join client sur rental.customer_id = customer.customer_id groupe par location.customer_id ***** par total desc 
On peut donc faire de nombreux tests avec Mysql pour tester les performances. Dans un autre tutoriel nous avancerons dans des requêtes plus complexes :

Exemple C


Nous voulons savoir quel est le client qui loue le plus de films pour cela, nous écrivons la clause suivante
 Sélectionnez CONCAT (customer.first_name, '', customer.last_name) en tant que client, comptez (rental.customer_id) en tant que total de la location interne join client sur rental.customer_id = customer.customer_id groupe par location.customer_id ***** par total desc 
Nous pouvons donc faire de nombreux tests avec MySQL pour tester les performances. Dans un autre tutoriel nous avancerons dans des requêtes plus complexes.

Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave