„MySQL“ prisijungia prie „Inner Join“

Šioje pamokoje naudosime vieną iš pavyzdinių duomenų bazių, kurias „Mysql“ mums teikia nemokamai, ji vadinama „Sakila“, taip pat galime atsisiųsti kitus pavyzdžius iš oficialios „Mysql“ svetainės.

Daugelis universitetų juos naudoja MySQL testavimui ir programavimui.
Tada išpakuojame atsisiųstą failą ir pamatysime du failus sakila-schema.sql kuriame yra duomenų bazės struktūra ir sakila-data.sql A, kuriame yra pavyzdiniai duomenys.
Šios duomenų bazės tikslas yra sukurti bandomąją aplinką, kuriant programinę įrangą arba bandant SQL užklausas ir taip atlikti testus naudojant „MySQL“ teikiamas galimybes. Sakilos struktūra yra sudėtinga, ji turi 1000 įrašų ir kelis ryšius.
„Sakila“ duomenų bazėje taip pat yra rodinių, saugomų procedūrų ir aktyviklių pavyzdžių.
Šioje duomenų bazėje laikoma filmų nuomos parduotuvė, kurioje gali būti filialų ir pardavėjų,
Procesas daro prielaidą, kad norėdami išsinuomoti filmą, pirmiausia turime patvirtinti, kad filmas yra ar yra sandėlyje, o tada turime patikrinti, ar klientas yra duomenų bazėje, ir priskiriame filmą ar DVD diską klientui. Pardavimą taip pat turime įtraukti į mokėjimo lentelę. Atsižvelgiant į verslo taisykles, gali tekti patikrinti, ar klientas turi neapmokėtą likutį.
Norėdami patikrinti, ar klientas egzistuoja vardu, galime atlikti paprastą užklausą:
 pasirinkite klientą iš kliento, kur klientas.pavardė, pvz., „Carlos%“, pasirinkite klientą. 
Šioje pamokoje mes sutelksime dėmesį į kombinuotas užklausas, atlikdami kelis pavyzdžius, kurie bus išsamiai paaiškinti.

SQL vidinio prisijungimo sąlyga


Sąlyga SQL JOIN naudojama sujungti dviejų ar daugiau lentelių eilutes, remiantis bendru jų lauku.
VIDAUS JUNGTIS grąžina visas sujungtas eilutes iš lentelių, kurios atitinka sujungimo sąlygą.

A pavyzdys


Norime sužinoti, kurie klientai tam išsinuomojo filmus, turime klientų ir nuomos stalus, todėl privalome žinoti, kurie klientai yra nuomos lentelėje.
 pasirinkite rental.rental_id, customer.fipavardė, klientas.paskutinis_vardas, rental.rental_date, rental.return_date iš nuomos INNER JOIN klientas ON rental.customer_id = customer.customer_id 
Šio punkto vykdymo rezultatas bus toks:

Šiuo atveju tą patį daryti užklausą naudojant Kur:
 pasirinkite nuoma.nuomos_namas, klientas.pavadinimas_pavadinimas, klientas.paskutinis_vardas, nuoma.nuomos_data, nuoma.grąžinimo data iš nuomos, klientas, kur nuoma.kliento_id = klientas.kliento_id 
Skirtumas tas, kad vidinis prisijungimas prie SQL užklausos optimizavimo bus kiek greitesnis.

B pavyzdys


Turime dvi parduotuves ar filialus, kurie kasdien sukuria pavėluoto nuomos sąrašą, kad būtų galima susisiekti su klientais ir paprašyti grąžinti filmą.
Norėdami sugeneruoti šį sąrašą, turime ieškoti nuomos lentelės, norėdami rasti filmų, kurių grąžinimo data yra NULL, tai yra, be datos ir kad nuomos data viršija laiką ar dienų skaičių, nustatytą, kad klientas galėtų išsaugoti filmą. Jei ši sąlyga įvykdyta, klientas yra skolingas už filmą, o filmo pavadinimas turėtų būti pateiktas sąraše kartu su kliento vardu, telefono numeriu ir el. Taip pat parodysime, ar filmas yra mokamas, kurią dieną jis buvo sumokėtas ir kiek buvo sumokėta.
 PASIRINKITE KONCATĄ (customer.last_name, ',', customer.first_name) AS klientas, adresas.telefonas, 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 adresas ON customer.address_id = address.address_id INNER JOIN inventorius ON rental.inventory_id = inventory.inventory_id INNER JOIN filmas ON inventory.film_id = film.film_id INNER JOIN mokėjimas ON payment.rental_id = rental.rent .return_date IS NULL AND rental_date + INTERVAL film.rental_duration DIENA <CURRENT_DATE () 

C pavyzdys


Norime išsiaiškinti, kuris klientas tam nuomoja daugiausia filmų, rašome šį punktą
 Pasirinkite CONCAT (kliento pavardės vardas, '', klientas.paskutinis_vardas) kaip klientą, skaičiuokite (rent.customer_id) kaip iš viso iš nuomos vidinio prisijungimo kliento, esančio rent.customer_id = customer.customer_id grupėje pagal rental.customer_id ***** iš viso aprašymas 
Taigi, norėdami patikrinti našumą, galime atlikti daug bandymų su „Mysql“. Kitoje pamokoje mes pateiksime sudėtingesnes užklausas:

C pavyzdys


Norime išsiaiškinti, kuris klientas tam nuomoja daugiausia filmų, rašome šį punktą
 Pasirinkite CONCAT (kliento pavardės vardas, '', klientas.paskutinis_vardas) kaip klientą, skaičiuokite (rent.customer_id) kaip iš viso iš nuomos vidinio prisijungimo kliento, esančio rent.customer_id = customer.customer_id grupėje pagal rental.customer_id ***** iš viso aprašymas 
Taigi, norėdami patikrinti našumą, su „MySQL“ galime atlikti daugybę testų. Kitoje pamokoje mes pateiksime sudėtingesnes užklausas.

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave