MySQL се присъединява с Inner Join

За този урок ще използваме една от примерните бази данни, които Mysql ни предоставя безплатно, тя се нарича Sakila, можем да изтеглим и други примери от официалния уебсайт на Mysql.

Много университети ги използват за тестване на MySQL и за програмиране.
След това разархивираме изтегления файл и ще видим два файла sakila-schema.sql съдържаща структурата на базата данни и sakila-data.sql A, съдържащ примерните данни.
Целта на тази база данни е да осигури тестова среда, или да разработи софтуер, или да тества sql заявки и по този начин да може да извършва тестове с възможностите, предлагани от MySQL. Структурата на Сакила е сложна, има 1000 записа и множество връзки.
Базата данни Sakila също съдържа примери за изгледи, съхранени процедури и тригери.
Тази база данни предполага магазин за филми под наем, който може да има клонове и доставчици,
Процесът предполага, че за да наемете филм, първо трябва да потвърдим, че филмът е наличен или на склад, а след това трябва да проверим дали клиентът съществува в базата данни и ние ще присвоим филма или DVD на клиента. Трябва също така да вмъкнем продажбата в таблицата за заплащане. В зависимост от бизнес правилата може също да се наложи да проверите дали клиентът има неплатено салдо.
За да проверим дали клиентът съществува по име, можем да направим проста заявка:
 изберете customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) като клиент от клиент, където customer.first_name като 'Carlos% 
В този урок ще се съсредоточим върху комбинираните заявки, като изпълним няколко примера, които ще бъдат обяснени подробно.

SQL вътрешна клауза за присъединяване


Клауза SQL JOIN се използва за комбиниране на редове от две или повече таблици, въз основа на общо поле между тях.
ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ връща всички съединени редове от таблиците, които отговарят на условието за присъединяване.

Пример А.


Искаме да знаем кои клиенти са наели филми за това, имаме масата за клиенти и масата под наем, затова трябва да знаем кои клиенти са в таблицата под наем.
 изберете rent.rental_id, customer.first_name, customer.last_name, rent.rental_date, rent.return_date от отдаване под наем ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ на клиента ON rent.customer_id = customer.customer_id 
Резултатът от изпълнението на тази клауза ще бъде следният:

В този случай е същото да направите заявката с Where:
 изберете rent.rental_id, customer.first_name, customer.last_name, rent.rental_date, rent.return_date от отдаване под наем, клиент където rent.customer_id = customer.customer_id 
Разликата е, че вътрешното присъединяване при оптимизирането на SQL заявката ще бъде малко по -бързо.

Пример Б


Имаме два магазина или клона, които генерират ежедневен списък с просрочени наеми, за да могат да се свържат с клиентите и да бъдат помолени да върнат филма.
За да генерираме този списък, трябва да потърсим под наем таблицата за филми с дата на връщане, която е НУЛ, тоест без дата и че датата на наема надвишава времето или броя дни, установени, че клиентът може да запази филма. Ако това условие е изпълнено, тогава клиентът има дълг за филма и името на филма трябва да бъде показано в списъка заедно с името на клиента, телефонния номер и имейл. Ще покажем и дали филмът е платен, на коя дата е платен и колко е платен.
 ИЗБЕРЕТЕ CONCAT (customer.last_name, ',', customer.first_name) КАТО клиент, address.phone, film.title, customer.email, rent.return_date, payment.payment_date, payment.amount ОТ НАЕМ ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ на клиент ON rent.customer_id = customer.customer_id INNER JOIN адрес ON customer.address_id = address.address_id INNER JOIN инвентар ON rent.inventory_id = inventory.inventory_id ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ филм ON inventory.film_id = film.film_id ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ плащане при плащане.rental_id = наем.rental_id WHERE .return_date е НУЛА И дата на наемане + ИНТЕРВАЛ филм.rental_duration DAY <CURRENT_DATE () 

Пример В.


Искаме да разберем кой е клиентът, който наема най -много филми за това, пишем следната клауза
 Изберете CONCAT (customer.first_name " описание 
Така че можем да направим много тестове с Mysql, за да тестваме производителността. В друг урок ще преминем към по -сложни заявки:

Пример В.


Искаме да разберем кой е клиентът, който наема най -много филми за това, пишем следната клауза
 Изберете CONCAT (customer.first_name " описание 
Така че можем да направим много тестове с MySQL, за да тестваме производителността. В друг урок ще преминем към по -сложни заявки.

Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave