MySQL JOIN: описание, пример использования команды и рекомендации

MySQL JOINПроцесс разработки баз данных для интернет-ресурсов практически ничем не отличается от разработки стандартных баз данных, которые создаются в системе MSSQL SERVER. Для ресурсов такого рода, как правило, используется язык MYSQL, хотя можно применять его и к разработке стандартных программных продуктов, предназначенных для домашнего использования. В данной статье речь будет идти не об этом. При работе с базами данных в любом языке программирования стоит задача выполнить выборку данных для выведения в различные отчеты, графики и так далее. Обычно, при выполнении задач такого рода приходится применять не одну, а сразу несколько таблиц, объединяя их в один запрос и тем самым значительно усложняя его конструкцию. При этом следует учитывать, как должны будут выводиться данные, как таблицы будут «подтягиваться» и какой результат будет приемлем для программиста. Для решения подобных задач необходимо использовать одну стандартную конструкцию языка MySQL – Join.

Join: понятие

Обычно языки разработки баз данных вне зависимости от их типа берут за основу стандартные слова из англоязычных словарей. Если вы хорошо владеете английским языком, вам проще будет работать с таблицами. Для реализации подключения таблиц в выборку было использовано слово Join. Перевести это служебное слово можно точно так же,как и в самом языке – «объединение». Конструкцию MySQL Join можно интерпретировать точно так же. Если расшифровать назначение конструкции и схему ее работы, то мы получим следующее значение: конструкция позволяет собирать нужные поля из различных таблиц и вложенных запросов в одну выборку.

Join: конструкции для объединения

Если программисту требуется собрать выборку из нескольких таблиц и при этом ему известно, какие ключевые поля в них имеются и какие данные необходимы для отчета, то можно использовать одну из основных конструкций объединения для достижения желаемого результата. Существует четыре основных конструкции для объединения таблиц: Right Join, Left Join, Cross Join, Inner Join. Каждая из стандартных конструкций в зависимости от поставленной задачи будет давать различные результаты. Это дает возможность получить в кратчайшие сроки отчеты по различным параметрам.

Join: создание и заполнение таблиц для дальнейшего использования

Прежде чем начать рассматривать механизмы работы с конструкциями объединения данных, необходимо подготовить несколько таблиц, с которыми мы будем в дальнейшем вести работу. Это даст возможность наглядно показать основные принципы работы операторов. Таким образом, новички могут легче усвоить азы программирования таблиц. В первой таблице будет приведено описание некоторых предметов, с которыми человеку приходится постоянно сталкиваться на протяжении всей жизни. Во второй таблице будут описаны некоторые свойства объектов из первой таблицы, чтобы в дальнейшем можно было легко и просто работать с ними. Двух таблиц в целом должно быть достаточно для того, чтобы показать на примере их работу. Теперь можно приступать непосредственно к практическому рассмотрению наших конструкций.

Применение Inner Join

В случае использования конструкции MySQL – Join Inner необходимо учитывать ее некоторые особенности. Эта конструкция позволяет выбрать их обеих таблиц те записи, которые имеются и в первой, и во второй таблице. Как же это работает? У нас есть главный ключ в первой таблице – ID. Он указывает на порядковый номер записей в таблице. Этот же ключ при создании второй таблицы применяется как порядковый номер. Оператор Select при выборе данных в результате определит только те записи, порядковые номера которых совпадают. Это означает, что они есть и в первой, и во второй таблице. В случае использования данной конструкции необходимо четко понимать, какие именно данные нужно получить. Самой распространенной ошибкой начинающих программистов баз данных является неправильное и нерациональное использование конструкции Inner Join. В качестве примера использования MySQL Inner Join можно рассмотреть скрипт, который возвращает из описанных ранее таблиц информацию о предметах и свойствах. Здесь существует несколько способов использования данной конструкции. В этом плане MySQL является очень гибким языком. Рассмотрим примеры использования My SQL Inner Join.

  1. Объединение таблиц без указания параметров.
  2. Использование служебного слова Using. Если указать, что нужно учитывать главные ключи записей в таблицах, то результат выборки изменится кардинально. В результате будет получена выборка, которая вернет строки, имеющие одинаковые главные ключи.
  3. Возможен еще один вариант использования данной конструкции: в запросе через слово on указываются поля, по которым должно осуществляться объединение таблиц.

Особенности использования Left Join

Если рассмотреть еще один способ объединения таблиц с использованием конструкции MySQL-Join, то можно заметить разницу в выводимых данных. Конструкция Left является таким механизмом. Применение конструкции Left Join MySQL имеет ряд особенностей, и требует четкого понимания результата, который требуется получить. Сначала в данном случае будут выбраны все записи из первой таблицы, а к ним в дальнейшем будут присоединены все записи из второй таблицы свойств. В этом случае, если в первой таблице присутствует запись, к примеру «стол», а во второй таблице для нее нет ни одного свойства, то оператор Left напротив этой записи выведет значение null. Это должно сказать программисту о том, что по этому виду предмета нет признаков. Использование данной конструкции позволяет определять, по каким полям не выставлена цена, гарантийный срок и так далее. Рассмотрим пример использования LeftJoin. Чтобы рассмотреть использование оператора конструкции LeftJoin будем использовать описанные ранее таблицы. Предположим, нам нужно выбрать весь список товаров, которые имеются в магазине, и проверить, по каким их них не проставлены свойства или признаки. Выборка в таком случае выведет на экран все товары. По тем товаров, у которых нет свойства, будут выставлены пустые значения.

Применение Where в конструкции Join

В качестве параметра объединение может содержать не только указание полей, по которым требуется выполнить подключение таблиц, но и оператор условия Where. В качестве примера рассмотрим скрипт, который может вернуть нам только те записи, по которым признак не проставлен. В конструкцию Join в этом случае необходимо внести оператор условия и указать, что именно нужно вернуть в качестве результата. При использовании Where в MySQL Join следует четко понимать, что в результате будут отображены только те записи, к которым относится указанное условие. Подобные запросы позволяют делать выборки по конкретным данным, которые относятся к условию, выбранному программистом. Можно указать несколько таких условий, при этом максимально уточняя параметры выбора данных из объединенных таблиц.

Применение Join для изменения информации в таблицах

По сути, конструкция Join является универсальной. Она дает возможность не только делать различные выборки, но и подключать в запросы от одной до нескольких таблиц, вводить в выборку дополнительные условия. Также можно использовать конструкцию и для выполнения других операций с данными. Так, к примеру, можно использовать Join для изменения данных в таблице. Если говорить точнее, Join может использоваться для уточнения условий в таблице или в тех случаях, когда требуется обновить данные по одним и тем же условиям в нескольких таблицах. Рассмотрим для примера следующую задачу. Дано три таблицы, в которых имеются некоторые данные. Необходимо выполнить изменение информации в обеих таблицах, используя для этой цели один запрос. Для решения заданий такого рода можно использовать в команде Update конструкцию Join. Сам по себе тип конструкции Join будет зависеть, как и в случае с выборкой данных, от результата, который программист хочет получить. Давайте рассмотрим самый простой пример. Необходимо обновить одним запросом данные по одним и тем же условиям. Запросы такого рода строятся для оптимизации работы с БД. Зачем же писать для каждой из таблиц различные запросы, если можно выполнить все манипуляции с данными при помощи всего одного запроса?

Построение сложных запросов

Часто при работе с базами данных возникает необходимость построения запросов не только с объединением нескольких таблиц, но и с использование подзапросов. Эти задачи являются довольно сложными для начинающего программиста. Сложность заключается в том, что необходимо продумывать каждый шаг, смотреть, какие данные из какого запроса или какой таблицы необходимо получить и как нужно будет работать с ними в дальнейшем. Для более детального понимания можно попробовать рассмотреть примеры сложных запросов. Если вы только начинаете работать с базами данных, это будет вам полезно.

Пример многотабличного запроса

SELECTSQL_CALC_FOUND_ROWS

dgs.dogovor_id,

dgs.dogovor_name,

dgs. abonent_name,

dgs.abonent_type,

dgs.address_fiz,

dgs.date_conclusion,

dgs.date_annulment,

dgs.threshold,

ubc.usum

FROM

billing_dogovorsdgs

LEFT JOIN

billing_users_balanceubc

ON

ubc.udate=CURDATE ()

AND

dgs.dogovor_id=ubc.dogovor_id

WHERE

dgs.dogovor_name LIKE “%123”

ORDER BY

Dgs.dogovor_name ASC

LIMIT

0, 60

Такой запрос вернет 60 записей о договорах продажи, по которым существует или заполнен баланс денежных средств на заданную дату. В данном случае имеется в виду текущая дата. В выборку также добавлено условие, что в названии договора должны присутствовать символы “123”. Информация, выводимая на экран, будет иметь сортировку – упорядоченность по номеру договора. Следующий пример выведет на экран информацию обо всех платежах, в которых будет указан номер договора.

Применение подзапросов

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

В данном обзоре были приведены только стандартные способы использования конструкций MySQL. Как использовать конструкцию Join и в каком виде, предстоит решать непосредственно самому программисту. Главное – помнить и учитывать, какой результат необходимо получить при выполнении запроса.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *