MySQL blir med Inner Join

For denne opplæringen vil vi bruke en av eksempeldatabasene som Mysql gir oss gratis, den kalles Sakila, vi kan også laste ned andre eksempler fra det offisielle Mysql -nettstedet.

Mange universiteter bruker dem for å teste MySQL og for programmering.
Deretter pakker vi ut den nedlastede filen, og vi får se to filer sakila-schema.sql som inneholder databasestrukturen og sakila-data.sql A som inneholder eksempeldata.
Målet med denne databasen er å tilby et testmiljø, enten for å utvikle programvare eller teste sql -spørringer og dermed kunne utføre tester med mulighetene som tilbys av MySQL. Sakilas struktur er kompleks, den har 1000 poster og flere relasjoner.
Sakila -databasen inneholder også eksempler på visninger, lagrede prosedyrer og utløsere.
Denne databasen forutsetter en filmutleiebutikk som kan ha filialer og leverandører,
Prosessen forutsetter at for å leie en film må vi først bekrefte at filmen er tilgjengelig eller på lager, og deretter må vi sjekke om klienten finnes i databasen, og vi vil tildele filmen eller DVDen til klienten. Vi må også sette inn salget i lønnstabellen. Avhengig av forretningsreglene kan det også være nødvendig å sjekke om kunden har en utestående saldo.
For å sjekke om klienten eksisterer ved navn, kan vi gjøre en enkel spørring:
 velg customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) som kunde fra kunde hvor customer.first_name liker 'Carlos% 
I denne opplæringen vil vi fokusere på kombinerte spørringer ved å utføre flere eksempler som vil bli forklart i detalj.

SQL Inner Join -klausul


En SQL JOIN -klausul brukes til å kombinere rader fra to eller flere tabeller, basert på et felles felt mellom dem.
INDRE BLI MED returnerer alle sammenføyde rader fra tabellene som oppfyller sammenføyningsbetingelsen.

Eksempel A.


Vi vil vite hvilke kunder som leide filmer for dette, vi har kundetabellen og utleiebordet, derfor må vi vite hvilke kunder som er i utleiebordet.
 velg 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 
Resultatet av gjennomføringen av denne klausulen vil være følgende:

I dette tilfellet er det det samme å gjøre spørringen med et Hvor:
 velg rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date from rental, customer where rental.customer_id = customer.customer_id 
Forskjellen er at den indre går med i optimaliseringen av SQL -spørringen som vil bli noe raskere.

Eksempel B


Vi har to butikker eller filialer som lager en daglig liste over forfalte utleie, slik at kunder kan bli kontaktet og bedt om å returnere filmen.
For å generere denne listen må vi søke i leietabellen etter filmer med en returdato som er NULL, det vil si ingen dato og at leiedatoen overstiger tiden eller antall dager som klienten kan beholde filmen. Hvis denne betingelsen er oppfylt, har kunden gjeld for filmen, og navnet på filmen skal vises i listen sammen med klientens navn, telefonnummer og e -postadresse. Vi viser også om filmen er betalt, på hvilken dato den ble betalt og hvor mye som ble betalt.
 VELG CONCAT (customer.last_name, ',', customer.first_name) AS kunde, address.phone, film.title, customer.email, rental.return_date, payment.payment_date, payment.amount FROM rental INNER JOIN customer ON rental.customer_id = customer.customer_id INNER JOIN address ON customer.address_id = address.address_id INNER JOIN beholdning ON rental.inventory_id = inventar.inventory_id INNER JOIN film PÅ inventar.film_id INNER JOIN betaling ved betaling.rental_id = rental.rental_id HVOR .return_date ER NULL AND rental_date + INTERVAL film.rental_duration DAY <CURRENT_DATE () 

Eksempel C


Vi ønsker å finne ut hvilken klient som leier flest filmer for dette, vi skriver følgende klausul
 Velg CONCAT (customer.first_name, '', customer.last_name) som Customer, tell (rental.customer_id) som Total fra rental inner join customer på rental.customer_id = customer.customer_id group etter rental.customer_id ***** etter totalt desc 
Så vi kan gjøre mange tester med Mysql for å teste ytelsen. I en annen opplæring vil vi gå videre i mer komplekse spørsmål:

Eksempel C


Vi ønsker å finne ut hvilken klient som leier flest filmer for dette, vi skriver følgende klausul
 Velg CONCAT (customer.first_name, '', customer.last_name) som Customer, tell (rental.customer_id) som Total fra rental inner join customer på rental.customer_id = customer.customer_id group etter rental.customer_id ***** totalt desc 
Så vi kan gjøre mange tester med MySQL for å teste ytelsen. I en annen opplæring vil vi gå videre i mer komplekse spørsmål.

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave