MySQL сочетания с Inner Join

{title}

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

{title}


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

SQL Inner Join Предложение


Предложение SQL JOIN используется для объединения строк из двух или более таблиц на основе общего поля между ними.
INNER JOIN возвращает все объединенные строки таблиц, которые удовлетворяют условию соединения.

Пример А


Мы хотим знать, что клиенты арендовали фильмы для этого у нас есть таблица клиентов и таблица аренды, поэтому мы должны знать, какие клиенты находятся в таблице аренды.
 выберите rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date из проката. ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПОЛЬЗОВАТЕЛЯ НА rental.customer_id = customer.customer_id 
Результат выполнения этого условия будет следующим:

{title}


В этом случае то же самое сделать запрос с помощью Где:
 выберите rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date из аренду, клиент, где rental.customer_id = customer.customer_id 
Разница в том, что внутреннее объединение при оптимизации SQL-запроса будет несколько быстрее.

Пример Б


У нас есть два магазина или филиала, которые ежедневно генерируют список просроченных прокатов, чтобы можно было связаться с клиентами и попросить их вернуть фильм.
Чтобы сгенерировать этот список, мы должны посмотреть в таблице проката фильмы с датой возврата, равной NULL, без даты, и дата проката превышает время или количество дней, установленных для того, чтобы клиент мог сохранить фильм. Если это условие выполнено, то клиент должен фильм, и название фильма должно быть указано в списке вместе с именем клиента, номером телефона и адресом электронной почты. Мы также покажем, оплачивается ли фильм, в какую дату он был оплачен и сколько он был оплачен.
 ВЫБЕРИТЕ CONCAT (customer.last_name, ', ', customer.first_name) AS customer, address.phone, film.title, customer.email, rental.return_date, payment.payment_date, payment.amount ОТ аренды ВНУТРЕННЕЕ ПРИСОЕДИНЯЙТЕСЬ к клиенту НА rental.customer_id = customer.customer_id ВНУТРЕННИЙ ОБЪЕДИНЯЙТЕ НА ВКЛЮЧЕНИИ customer.address_id = address.address_id ВНУТРЕННИЙ ОБЪЕДИНЯЙТЕ ИНВЕНТАРЬ НА Rental.inventory_id = inventory.inventory_id ВНУТРЕННИЙ ПРИСОЕДИНЯЙТЕСЬ К ПЛЕНУ НА инвентаризацию.film_id = film.film_id ВНУТР. .return_date IS NULL AND rental_date + INTERVAL film.rental_duration DAY <CURRENT_DATE () 

Пример С


Мы хотим выяснить, кто является клиентом, чтобы больше фильмов, которые я снимаю для него, напишем следующий пункт
 Выберите CONCAT (customer.first_name, '', customer.last_name) в качестве Клиента, считайте (rental.customer_id) в качестве Итого от арендного внутреннего клиента присоединения к группе rental.customer_id = customer.customer_id по rental.customer_id ***** по итогу по убыванию 
Таким образом, мы можем сделать много тестов с Mysql для тестирования производительности. В другом уроке мы перейдем к более сложным запросам:

Пример С


Мы хотим выяснить, кто является клиентом, чтобы больше фильмов, которые я снимаю для него, напишем следующий пункт
 Выберите CONCAT (customer.first_name, '', customer.last_name) в качестве Клиента, считайте (rental.customer_id) в качестве Итого от арендного внутреннего клиента присоединения к группе rental.customer_id = customer.customer_id по rental.customer_id ***** по итогу по убыванию 
Таким образом, мы можем сделать много тестов с MySQL, чтобы проверить производительность. В другом уроке мы перейдем к более сложным запросам.

  • 0