MySQL pievienojas Inner Join

Šajā apmācībā mēs izmantosim vienu no piemēru datu bāzēm, ko Mysql mums nodrošina bez maksas, to sauc par Sakila, mēs varam arī lejupielādēt citus piemērus no oficiālās Mysql vietnes.

Daudzas universitātes tos izmanto MySQL testēšanai un programmēšanai.
Tālāk mēs izpakojam lejupielādēto failu un mēs redzēsim divus failus sakila-schema.sql kas satur datu bāzes struktūru un sakila-data.sql A, kas satur datu paraugus.
Šīs datu bāzes mērķis ir nodrošināt testa vidi, lai izstrādātu programmatūru vai pārbaudītu SQL vaicājumus un tādējādi spētu veikt testus ar MySQL piedāvātajām iespējām. Sakilas struktūra ir sarežģīta, tai ir 1000 ierakstu un vairākas attiecības.
Sakila datu bāzē ir arī skatu, saglabāto procedūru un aktivizētāju piemēri.
Šajā datubāzē tiek pieņemts filmu nomas veikals, kuram var būt filiāles un pārdevēji,
Procesā tiek pieņemts, ka, lai iznomātu filmu, mums vispirms jāapstiprina, ka filma ir pieejama vai ir noliktavā, un pēc tam jāpārbauda, ​​vai klients datu bāzē eksistē, un mēs filmu vai DVD piešķirsim klientam. Mums ir arī jāievieto pārdošana maksājumu tabulā. Atkarībā no uzņēmējdarbības noteikumiem var būt nepieciešams arī pārbaudīt, vai klientam ir nesamaksāts atlikums.
Lai pārbaudītu, vai klients eksistē pēc vārda, mēs varam veikt vienkāršu vaicājumu:
 atlasiet klientu.klienta_id, klients.veikals_ID, CONCAT (klients.uzvārds, '', klients.pēdējais_vārds) kā Klients no klienta, kur klients.uzvārds, piemēram, 'Carlos% 
Šajā apmācībā mēs koncentrēsimies uz kombinētajiem vaicājumiem, veicot vairākus piemērus, kas tiks detalizēti izskaidroti.

SQL iekšējās pievienošanās klauzula


Klauzulu SQL JOIN izmanto, lai apvienotu rindas no divām vai vairākām tabulām, pamatojoties uz kopīgu lauku starp tām.
IEKŠĒJAIS PIEVIENOŠANĀS atgriež visas savienotās rindas no tabulām, kas atbilst savienojuma nosacījumam.

Piemērs A.


Mēs vēlamies zināt, kuri klienti šim nolūkam iznomāja filmas, mums ir galds Klienti un Nomas galds, tāpēc mums ir jāzina, kuri klienti atrodas nomas tabulā.
 atlasiet noma.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date no nomas INNER JOIN klients ON rental.customer_id = customer.customer_id 
Šīs klauzulas izpildes rezultāts būs šāds:

Šādā gadījumā vaicājumu var veikt ar vietni Kur:
 no nomas izvēlieties īr.nama_nosaukumu, pircēja.fizvērstā_vārdu, klienta.pēdējo_vārdu, īres.nama_datumu, nomas.atgriešanās_datumu, klients, kur īre.klienta_id = klients.klienta_id 
Atšķirība ir tāda, ka iekšējā pievienošanās SQL vaicājuma optimizācijai būs nedaudz ātrāka.

B piemērs


Mums ir divi veikali vai filiāles, kas katru dienu izveido nokavēto nomu sarakstu, lai ar klientiem varētu sazināties un lūgt atgriezt filmu.
Lai izveidotu šo sarakstu, nomas tabulā ir jāmeklē filmas, kuru atgriešanās datums ir NULL, tas ir, nav datuma un ka nomas datums pārsniedz laiku vai dienu skaitu, kas noteikts, ka klients var saglabāt filmu. Ja šis nosacījums ir izpildīts, tad klients ir parādā par filmu, un sarakstā jānorāda filmas nosaukums kopā ar klienta vārdu, tālruņa numuru un e -pastu. Mēs arī parādīsim, vai filma ir apmaksāta, kurā datumā tā tika samaksāta un cik samaksāta.
 ATLASIET KONCATU (customer.last_name, ',', customer.first_name) KĀ klients, adrese.tālrunis, filma.title, klients.pasts, noma.atgriešanās_datums, payment.payment_date, payment.amount NO noma INNER JOIN customer ON rental.customer_id = customer.customer_id INNER JOIN address ON customer.address_id = address.address_id INNER JOIN inventar ON ON rental.inventory_id = inventory.inventory_id INNER JOIN film ON inventory.film_id = film.film_id INNER JOIN maksājums ON payment.rental_id = rental.rent .return_date IS NULL AND rental_date + INTERVAL film.rental_duration DIENA <CURRENT_DATE () 

C piemērs


Mēs vēlamies noskaidrot, kurš ir klients, kurš šim nolūkam nomā visvairāk filmu, un mēs rakstām šādu punktu
 Atlasiet CONCAT (customer.first_name, '', customer.last_name) kā Klientu, saskaitiet (rental.customer_id) kā Total no nomas iekšējā klienta vietnē rental.customer_id = customer.customer_id group by rental.customer_id ***** kopā apraksts 
Tātad, lai pārbaudītu veiktspēju, ar Mysql mēs varam veikt daudzus testus. Citā apmācībā mēs pievērsīsimies sarežģītākiem jautājumiem:

C piemērs


Mēs vēlamies noskaidrot, kurš ir klients, kurš šim nolūkam nomā visvairāk filmu, un mēs rakstām šādu punktu
 Atlasiet CONCAT (customer.first_name, '', customer.last_name) kā Klientu, saskaitiet (rental.customer_id) kā Total no nomas iekšējā klienta vietnē rental.customer_id = customer.customer_id group by rental.customer_id ***** kopā apraksts 
Tātad, lai pārbaudītu veiktspēju, ar MySQL mēs varam veikt daudzus testus. Citā apmācībā mēs virzīsimies uz sarežģītākiem jautājumiem.

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave