/ / MySQL JOIN: опис, приклад використання команди і рекомендації

MySQL JOIN: опис, приклад використання команди і рекомендації

Розробка баз даних інтернет-ресурсівпрактично нічим не відрізняється від стандартних баз даних, розроблених в системі MS SQL SERVER. Як правило, для такого роду ресурсів використовується мова MY SQL, хоча його можна застосовувати і до розробки стандартних програмних продуктів, для локального використання. Але мова в статті піде не про це.

mysql join

Часто при роботі з базами даних в кожному змов стоїть завдання зробити вибірку даних для виведення в різноманітні звіти, графіки і так далі. Як правило, при реалізації такого роду завдань доводиться використовувати не одну, а кілька таблиць, об'єднуючи їх в один запит, значно ускладнюючи його конструкцію. При цьому необхідно враховувати те, як повинні будуть виводитися дані, як будуть «підтягуватися» таблиці і який результат буде максимально прийнятним для програміста. Для вирішення таких завдань використовується одна зі стандартних конструкція мови MySQL - Join.

Поняття слова Join

Мови розробки баз даних, неважливо, що самеце за мова, за основу беруть стандартні слова з англомовних словників (саме тому за умови, що ви знаєте англійську мову, вам буде набагато простіше працювати з таблицями). Для реалізації підключення таблиць в вибірку взято таке ж слово - Join. У мові програмування баз даних Використовується My SQL. Переклад цього службового слова в точності такий же, як і в самій мові - «об'єднання».

Інтерпретація конструкції MySQL - Join, причомубудь-який з них, буде точно такий же. Якщо розшифрувати призначення конструкції, а саме схему її роботи, то отримаємо такі значення: конструкції дозволять зібрати потрібні поля з різних таблиць або вкладених запитів в одну вибірку.

Види конструкцій для об'єднання

mysql join

Якщо програмісту необхідно зібрати вибірку здекількох таблиць і він знає, які ключові поля в них і які саме дані необхідні для звіту, то можна скористатися однією з основних конструкцій об'єднання, для досягнення бажаного результату. Основних конструкцій (для об'єднання таблиць) чотири:

  1. Inner join.
  2. Cross Join.
  3. Left join.
  4. Right Join.

Залежно від поставленого завдання, кожна зі стандартних конструкцій буде давати різні результати, що дозволить отримувати звіти за різними параметрами в короткий термін.

Створення і заповнення таблиць для подальшого використання

Перед тим як почати, наприклад, розглядатимеханізми роботи з конструкціями об'єднання даних, варто підготувати кілька таблиць, з якими ми будемо надалі працювати. Це допоможе наочно показати всі принципи роботи операторів, крім того, таким чином новачки легше засвоять всі ази програмування таблиць.

У першій таблиці будуть описані деякі предмети, з якими людина постійно зустрічається протягом свого життя.

mysql join

У другій таблиці опишемо деякі властивості об'єктів з першої таблиці, щоб можна було в подальшому з ними працювати.

left join mysql

В цілому двох таблиць буде досить, щоб на прикладі показати їх роботу. Ось тепер можна приступати до практичного розгляду наших конструкцій.

Використання Inner Join

При використанні конструкції MySQL - Join Ineerварто враховувати деякі її особливості. Дана конструкція дозволить вибрати з обох таблиць тільки ті записи, які є і в першій і в другій таблиці. Як це працює? У першій таблиці у нас є головний ключ - ID, який вказує на порядковий номер записів в таблиці.

При створенні другої таблиці, цей же ключвикористовується як порядковий номер, приклад можна подивитися на малюнках. При виборі даних оператор Select визначить в результаті тільки ті записи, порядкові номери яких збігаються - значить, вони є і в першій і в другій таблиці.

При використанні конструкції потрібно розуміти,які саме дані необхідно отримати. Найпоширеніша помилка, особливо у початківця програміста баз даних, це нераціональне і неправильне використання конструкції Inner Join. Як приклад, MySQL Inner Join, можна розглянути скрипт, який поверне нам з раніше описаних і заповнених таблиць інформацію про предмети і їх властивості. Але і тут може бути кілька способів використання конструкції. В цьому плані My SQL дуже гнучкий мову. Отже, можна розглянути приклади використання MySQL Inner Join.

Об'єднання таблиць без вказівки, будь-яких параметрів. У цьому випадку ми отримаємо результат такого плану:

mysql inner join

Якщо вкажемо через службове слово Using, щообов'язково потрібно враховувати головні ключі записів в таблицях, то результат вибірки кардинально зміниться. У цьому випадку ми отримаємо вибірку, яка поверне тільки ті рядки, які мають однакові головні ключі.

mysql join приклади

Можливий ще й третій варіант використанняконструкції, коли в запиті через слово «on» вказуються поля, за якими має відбуватися об'єднання таблиць. В такому випадку вибірка поверне наступні дані:

mysql join select

Особливості використання Left Join

Якщо розглядати ще один спосіб об'єднання таблиць за допомогою конструкції MySQL - Join, можна помітити різницю в даних, які виводяться. Таким механізмом є конструкція Left.

Використання конструкції Left Join MySQL має деякі особливості і, як і Inner, вимагає чіткого розуміння результату, який необхідно отримати.

В даному випадку спочатку будуть обрані всі записиз першої таблиці, а в подальшому до них будуть приєднані записи з другої таблиці властивостей. При цьому, якщо в першій таблиці є запис, наприклад, "табурет", а в другій таблиці немає жодного властивості для неї, то оператор Left виведе навпаки цього запису значення null, що говорить програмісту про те, що ознак з цього виду предмета немає .

Використання цієї конструкції дозволять визначати, по яких полях або, наприклад, товарам в магазині не виставлена ​​ціна, гарантійний термін і так далі.

Приклад використання Left

Для розгляду на практиці оператораконструкції Left Join MySQL використовуємо раніше описані таблиці. Скажімо, необхідно вибрати весь список товарів, які є в магазині, і перевірити по яким з них не проставлені ознаки або властивості. В такому випадку вибірка виведе на екран всі товари, а за тими, у яких немає властивості, будуть проставлені порожні значення.

mysql update join

Використання Where в конструкції Join

Як параметр, об'єднання може включати не тільки вказівки полів, за якими необхідно провести підключення таблиць, але може і включати оператор умови Where.

Для прикладу розглянемо скрипт, який повиненповернути нам тільки ті записи, по яких не проставлено ознака. В такому випадку в конструкцію Join необхідно додати оператор умови і вказати, що саме потрібно повернути як результат.

При використанні в MySQL Join - Where потрібно чітко розуміти, що будуть показані тільки ті записи, до яких відноситься зазначена умова, і вибірка тоді буде виглядати наступним чином:

mysql join where

Такі запити дозволяють робити вибірки поконкретних даних, які відносяться до вибраного програмістом умові. Таких умов можна вказувати кілька, максимально при цьому уточнюючи параметри вибору даних з об'єднаних таблиць.

Використання Join для зміни даних в таблицях

Конструкція Join, по суті, універсальна. Вона дозволяє не тільки робити різноманітні вибірки, а й підключати в запити від однієї до кількох таблиць, вводити додаткові умови до вибірки. Конструкцію можна також використовувати і для інших операцій з даними. Так, Join можна використовувати для зміни даних в таблиці. Вірніше сказати, для уточнення умов в таблиці або ж в тих випадках, якщо потрібно оновити дані в декількох таблицях по одним і тим же умовам.

Для прикладу розглянемо таку задачу. Дано три таблиці, в яких є деякі дані. Потрібно провести зміну даних в обох таблицях, використовуючи один запит. Якраз для вирішення такого роду завдань можна застосовувати в команді Update конструкцію Join. Сам тип конструкції Join залежить, так само, як і в випадку з вибіркою даних, від результату, який хоче отримати програміст.

Розглянемо найпростіший приклад. Потрібно оновити одним запитом дані по одним і тим же умовам. Такого роду запити будуються для оптимізації роботи з базою даних. Навіщо писати різні запити для кожної з таблиць, якщо можна провести всі маніпуляції з даними одним запитом? Приклад MySQL Update Join в нашому випадку буде таким:

mysql left join приклади

Побудова складних запитів

Досить часто при роботі з базою данихнеобхідно будувати запити не тільки з об'єднанням декількох таблиць, а й з використанням підзапитів. Такі завдання досить складні для розуміння початківця програміста баз даних. Складність полягає в тому, що доводиться продумувати кожен крок, визначати, які дані з якої таблиці або запиту необхідно отримати і як надалі з ними потрібно буде працювати.

Для більш конкретного розуміння можна розглянути(В MySQL Join) приклади складних запитів. Якщо ви новачок і тільки починаєте працювати з базами даних, то такий тренінг піде лише на користь. Ідеальним варіантом, будуть MySQL Left Join приклади.

left join mysql

Даний запит поверне нам 58 записів про договорипродажу, за якими заповнений або існує баланс грошових коштів на обрану дату. В даному випадку це поточна дата. Також в вибірку додано умову, що в назві договору повинні бути символи - «123». Інформація, що виводиться на екран інформація (дані), буде мати сортування - впорядкованість за номером договору.

Наступний приклад виведе на екран дані про всі платежі, в яких буде вказано номер договору.

mysql join

Використання підзапитів

Як вже говорилося раніше, при роботі з базамиданих можна об'єднати не тільки таблиці, але і таблицю із запитом. Така конструкція використовується в основному для прискорення роботи запиту і його оптимізації.

Наприклад, якщо необхідно з таблиці, якамає кілька сот полів і, скажімо, тисячу записів, вибрати всього два поля, то варто використовувати запит, який поверне тільки необхідні поля, і об'єднати його з основною вибіркою даних. Як приклад MySQL Join Select можна розглянути запит такого типу:

mysql join

Це не всі способи використання стандартнихконструкцій MySQL, а тільки стандартні. Як використовувати конструкцію Join і в яких її видах, вирішує сам програміст, але варто пам'ятати і враховувати те, який результат треба отримати при виконанні запиту.

Ще почитайте: