MySQL se pridružuje s Inner Join

Za ovaj vodič koristit ćemo jednu od primjera baza podataka koje nam Mysql nudi besplatno, naziva se Sakila, a druge primjere možemo preuzeti i sa službene web stranice Mysql.

Mnoga sveučilišta koriste ih za testiranje MySQL -a i za programiranje.
Zatim raspakiramo preuzetu datoteku i vidjet ćemo dvije datoteke sakila-schema.sql koja sadrži strukturu baze podataka i sakila-data.sql A koji sadrži podatke uzorka.
Cilj ove baze podataka je pružiti testno okruženje za razvoj softvera ili testiranje sql upita i na taj način biti u mogućnosti izvesti testove s mogućnostima koje nudi MySQL. Sakilina struktura je složena, ima 1000 zapisa i više odnosa.
Baza podataka Sakila također sadrži primjere pogleda, pohranjenih procedura i okidača.
Ova baza podataka pretpostavlja prodavaonicu filmova koja može imati podružnice i dobavljače,
Postupak pretpostavlja da za iznajmljivanje filma prvo moramo potvrditi da je film dostupan ili na skladištu, a zatim moramo provjeriti postoji li klijent u bazi podataka, a mi ćemo mu dodijeliti film ili DVD. Moramo unijeti i prodaju u tablicu plaća. Ovisno o poslovnim pravilima, možda će također biti potrebno provjeriti ima li kupac nepodmireni dug.
Da bismo provjerili postoji li klijent po imenu, možemo napraviti jednostavan upit:
 odaberite customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) kao Kupca od kupca gdje customer.first_name poput 'Carlos% 
U ovom ćemo se vodiču usredotočiti na kombinirane upite izvodeći nekoliko primjera koji će biti detaljno objašnjeni.

SQL unutarnja klauzula pridruživanja


SQL JOIN klauzula koristi se za kombiniranje redaka iz dvije ili više tablica, na temelju zajedničkog polja između njih.
UNUTARNJE PRIDRUŽITE SE vraća sve spojene retke iz tablica koje zadovoljavaju uvjet pridruživanja.

Primjer A


Želimo znati koji su klijenti iznajmljivali filmove za to, imamo stol za kupce i stol za iznajmljivanje, stoga moramo znati koji su korisnici u stolu za iznajmljivanje.
 odaberite rent.rental_id, customer.first_name, customer.last_name, rent.rental_date, rent.return_date od najam UNUTRAŠNJE PRIDRUŽITE se korisniku ON na rent.customer_id = customer.customer_id 
Rezultat izvršavanja ove klauzule bit će sljedeći:

U ovom slučaju isto je učiniti upit s Where:
 odaberite rent.rental_id, customer.first_name, customer.last_name, rent.rental_date, rent.return_date od najam, kupac gdje je rent.customer_id = customer.customer_id 
Razlika je u tome što se unutarnje pridruživanje optimizaciji SQL upita odvija nešto brže.

Primjer B


Imamo dvije trgovine ili poslovnice koje generiraju dnevni popis dospjelih najmova tako da se korisnici mogu kontaktirati i zatražiti da vrate film.
Da bismo generirali ovaj popis, moramo pretražiti tablicu posudbe za filmove s datumom vraćanja koji je NULL, odnosno bez datuma i koji datum posudbe premašuje vrijeme ili broj dana za koje klijent može zadržati film. Ako je ovaj uvjet ispunjen, tada je klijent dužan za film, a naziv filma treba biti prikazan na popisu zajedno s imenom, telefonskim brojem i e -adresom klijenta. Također ćemo pokazati je li film plaćen, na koji datum je plaćen i koliko je plaćen.
 ODABERITE CONCAT (customer.last_name, ',', customer.first_name) KAO kupac, adresa. telefon, film.naslov, korisnička e -pošta, najam.return_date, payment.payment_date, payment.amount OD NAJAMA UNUTRAŠNJE PRIDRUŽITE se korisniku NA rent.customer_id = customer.customer_id INNER JOIN adresa UKLJ. customer_address_id = address.address_id INNER JOIN inventar ON rental.inventory_id = inventory.inventory_id UNUTRAŠNJI PRIDRUŽITE se film ON inventory.film_id = film.film_id UNUTRAŠNJE PRIDRUŽITE se uplata NA uplatu.rental_id = rent.id .return_date IS NULL AND renta_date + INTERVAL film.rental_duration DAY <CURRENT_DATE () 

Primjer C


Želimo saznati koji je klijent koji iznajmljuje najviše filmova za to, pišemo sljedeću klauzulu
 Odaberite CONCAT (customer.first_name, '', customer.last_name) kao klijenta, računajte (rent.customer_id) kao ukupno iz grupe za unutarnje pridruživanje korisnika na rent.customer_id = customer.customer_id grupi prema rent.customer_id ***** prema ukupno desc 
Tako možemo napraviti mnogo testova s ​​Mysqlom za provjeru performansi. U drugom vodiču ćemo napredovati u složenijim upitima:

Primjer C


Želimo saznati koji je klijent koji iznajmljuje najviše filmova za to, pišemo sljedeću klauzulu
 Odaberite CONCAT (customer.first_name, '', customer.last_name) kao klijenta, računajte (rent.customer_id) kao ukupno iz grupe za unutarnje pridruživanje korisnika na rent.customer_id = customer.customer_id grupi prema rent.customer_id ***** prema ukupno desc 
Tako možemo napraviti mnoge testove s MySQL -om kako bismo provjerili performanse. U drugom vodiču ćemo napredovati u složenijim upitima.

Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave