MySQL går med Inner Join

För denna handledning kommer vi att använda en av de exempeldatabaser som Mysql tillhandahåller oss gratis, den kallas Sakila, vi kan också ladda ner andra exempel från den officiella Mysql -webbplatsen.

Många universitet använder dem för att testa MySQL och för programmering.
Därefter packar vi upp den nedladdade filen och vi ser två filer sakila-schema.sql som innehåller databasstrukturen och sakila-data.sql A som innehåller provdata.
Syftet med denna databas är att tillhandahålla en testmiljö, antingen för att utveckla programvara eller testa SQL -frågor och därmed kunna utföra tester med de möjligheter som erbjuds av MySQL. Sakilas struktur är komplex, den har 1000 poster och flera relationer.
Sakila -databasen innehåller också exempel på vyer, lagrade procedurer och utlösare.
Denna databas förutsätter en filmuthyrningsbutik som kan ha filialer och leverantörer,
Processen förutsätter att för att hyra en film måste vi först bekräfta att filmen är tillgänglig eller i lager, och sedan måste vi kontrollera om klienten finns i databasen och vi kommer att tilldela filmen eller DVD: n till klienten. Vi måste också infoga försäljningen i lönebordet. Beroende på affärsreglerna kan det också vara nödvändigt att kontrollera om kunden har ett utestående saldo.
För att kontrollera om klienten finns med namn kan vi göra en enkel fråga:
 välj customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) som kund från kund där customer.first_name gillar 'Carlos% 
I denna handledning kommer vi att fokusera på kombinerade frågor genom att utföra flera exempel som kommer att förklaras i detalj.

SQL Inner Join -klausul


En SQL JOIN -sats används för att kombinera rader från två eller flera tabeller, baserat på ett gemensamt fält mellan dem.
INRE KOPPLING returnerar alla sammanfogade rader från tabellerna som uppfyller sammanfogningsvillkoret.

Exempel A


Vi vill veta vilka kunder som hyrde filmer för detta, vi har kundbordet och hyresbordet, därför måste vi veta vilka kunder som finns i hyresbordet.
 välj hyra.hyres_id, kund.första_namn, kund.sista_namn, uthyrning.hyresdatum, hyr.return_datum från hyra INNER JOIN -kund PÅ rental.customer_id = customer.customer_id 
Resultatet av genomförandet av denna klausul blir följande:

I det här fallet är det samma sak att göra frågan med ett var:
 välj uthyrning.hyresid., kund. första_namn, kund. senaste_namn, uthyrning.hyresdatum, uthyrning.återbetalningsdatum från uthyrning, kund där uthyrning.kund_id = kund.kund_id 
Skillnaden är att den inre går med i optimeringen av SQL -frågan som kommer att bli något snabbare.

Exempel B


Vi har två butiker eller filialer som skapar en daglig lista över försenade uthyrningar så att kunder kan kontaktas och bli ombedd att lämna tillbaka filmen.
För att generera den här listan måste vi söka i hyrbilstabellen efter filmer med ett returdatum som är NULL, det vill säga inget datum och att hyresdatumet överstiger den tid eller antal dagar som kunden kan behålla filmen. Om detta villkor är uppfyllt är klienten skyldig för filmen och filmens namn ska visas i listan tillsammans med kundens namn, telefonnummer och e -postadress. Vi kommer också att visa om filmen är betald, vilket datum den betalades och hur mycket som betalades.
 VÄLJ CONCAT (customer.last_name, ',', customer.first_name) AS kund, address.phone, film.title, customer.email, rental.return_date, payment.payment_date, payment.amount FROM rental INNER GÅ MED kund på rental.customer_id = customer.customer_id INNER JOIN -adress PÅ customer.address_id = address.address_id INNER JOIN -inventarier ON rental.inventory_id = inventarier_inventory_id INNER JOIN -film ON inventory.film_id INNER JOIN -betalning PÅ betalning.rental_id = uthyrning.rental_id VAR .return_date IS NULL AND rental_date + INTERVAL film.rental_duration DAY <CURRENT_DATE () 

Exempel C


Vi vill ta reda på vilken som är klienten som hyr flest filmer för detta skriver vi följande klausul
 Välj CONCAT (customer.first_name, '', customer.last_name) som kund, räkna (rental.customer_id) som totalt från uthyrning inner join customer på rental.customer_id = customer.customer_id group efter rental.customer_id ***** med totalt desc 
Så vi kan göra många tester med Mysql för att testa prestanda. I en annan handledning kommer vi att gå vidare i mer komplexa frågor:

Exempel C


Vi vill ta reda på vilken som är klienten som hyr flest filmer för detta skriver vi följande klausul
 Välj CONCAT (customer.first_name, '', customer.last_name) som kund, räkna (rental.customer_id) som totalt från uthyrning inner join customer på rental.customer_id = customer.customer_id group efter rental.customer_id ***** med totalt desc 
Så vi kan göra många tester med MySQL för att testa prestanda. I en annan handledning kommer vi att gå vidare i mer komplexa frågor.

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave