MySQL sluit zich aan bij Inner Join

Voor deze tutorial zullen we een van de voorbeelddatabases gebruiken die Mysql ons gratis biedt, het heet Sakila, we kunnen ook andere voorbeelden downloaden van de officiële Mysql-website.

Veel universiteiten gebruiken ze voor het testen van MySQL en voor programmeren.
Vervolgens pakken we het gedownloade bestand uit en zien we twee bestanden sakila-schema.sql met daarin de databasestructuur en sakila-data.sql A met daarin de voorbeeldgegevens.
Het doel van deze database is om een ​​testomgeving te bieden, om ofwel software te ontwikkelen ofwel sql queries te testen en zo testen uit te kunnen voeren met de mogelijkheden die MySQL biedt. Sakila's structuur is complex, het heeft 1000 records en meerdere relaties.
De Sakila-database bevat ook voorbeelden van views, opgeslagen procedures en triggers.
Deze database gaat uit van een filmverhuurwinkel die vestigingen en verkopers kan hebben,
Het proces gaat ervan uit dat om een ​​film te huren, we eerst moeten bevestigen dat de film beschikbaar of op voorraad is, en dan moeten we controleren of de klant in de database bestaat en we zullen de film of dvd aan de klant toewijzen. We moeten de verkoop ook in de uitbetalingstabel invoeren. Afhankelijk van de bedrijfsregels kan het ook nodig zijn om te controleren of de klant een openstaand saldo heeft.
Om te controleren of de klant op naam bestaat, kunnen we een eenvoudige query uitvoeren:
 selecteer customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) als klant van klant waar klant.first_name zoals 'Carlos% 
In deze tutorial zullen we ons concentreren op gecombineerde zoekopdrachten door verschillende voorbeelden uit te voeren die in detail zullen worden uitgelegd.

SQL Inner Join-clausule


Een SQL JOIN-clausule wordt gebruikt om rijen uit twee of meer tabellen te combineren op basis van een gemeenschappelijk veld ertussen.
INNERLIJKE JOIN retourneert alle samengevoegde rijen uit de tabellen die voldoen aan de join-voorwaarde.

Voorbeeld A


We willen weten welke klanten films hebben gehuurd hiervoor hebben we de Klantentabel en de Verhuurtabel, daarom moeten we weten welke klanten in de Verhuurtabel staan.
 selecteer rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date van verhuur INNER WORD LID VAN klant ON rental.customer_id = klant.klant_id 
Het resultaat van het uitvoeren van deze clausule is het volgende:

In dit geval is het hetzelfde om de query uit te voeren met een Where:
 selecteer rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date van verhuur, klant waar verhuur.klant_id = klant.klant_id 
Het verschil is dat de inner join bij de optimalisatie van de SQL-query wat sneller zal gaan.

Voorbeeld B


We hebben twee winkels of filialen die dagelijks een lijst met achterstallige verhuur genereren, zodat klanten kunnen worden gecontacteerd en gevraagd om de film terug te sturen.
Om deze lijst te genereren, moeten we in de huurtabel zoeken naar films met een retourdatum die NULL is, dat wil zeggen geen datum en dat de huurdatum de vastgestelde tijd of het aantal dagen overschrijdt dat de klant de film kan houden. Als aan deze voorwaarde is voldaan, heeft de klant een schuld voor de film en moet de naam van de film in de lijst worden weergegeven, samen met de naam, het telefoonnummer en het e-mailadres van de klant. We laten ook zien of de film is betaald, op welke datum deze is betaald en hoeveel is betaald.
 SELECT CONCAT (klant.achternaam, ',', klant.voornaam) AS klant, adres.telefoon, film.titel, klant.e-mail, huur.retourdatum, betaling.betalingsdatum, betaling.bedrag VANAF verhuur INNER WORD LID VAN klant OP verhuur.klant_id = customer.customer_id INNER WORD LID VAN adres OP customer.address_id = address.address_id INNER VOEG AAN inventaris AAN rental.inventory_id = inventory.inventory_id INNER WORD LID VAN film AAN inventory.film_id = film.film_id BINNEN KOM AAN betaling OP payment.rental_id = rental.rental_id WAAR verhuur .return_date IS NULL EN huurdatum + INTERVAL film.rental_duration DAG <CURRENT_DATE () 

Voorbeeld C


We willen weten welke klant de meeste films huurt, hiervoor schrijven we de volgende clausule:
 Selecteer CONCAT (customer.first_name, '', customer.last_name) als klant, tel (rental.customer_id) als totaal van verhuur inner join customer op rental.customer_id = customer.customer_id groepeer op rental.customer_id ***** op totaal desc 
We kunnen dus veel tests doen met Mysql om de prestaties te testen. In een andere zelfstudie gaan we verder in complexere zoekopdrachten:

Voorbeeld C


We willen weten welke klant de meeste films huurt, hiervoor schrijven we de volgende clausule:
 Selecteer CONCAT (customer.first_name, '', customer.last_name) als klant, tel (rental.customer_id) als totaal van verhuur inner join customer op rental.customer_id = customer.customer_id groepeer op rental.customer_id ***** op totaal desc 
We kunnen dus veel tests doen met MySQL om de prestaties te testen. In een andere zelfstudie gaan we verder in complexere zoekopdrachten.

Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave