кодесурса
«MYSQL

MySQL LEFT JOIN

script1adsense2code
script1adsense3code

Что такое LEFT JOIN в MySQL?

MySQL LEFT JOIN объединяет две таблицы и выбирает строки на основе условия, которое совпадает в обеих таблицах, и несопоставленные строки также будут доступны из таблицы, написанной до предложения JOIN.

Иллюстрированная презентация MySQL LEFT JOIN:

«Иллюстрированные

MySQL LEFT JOIN Синтаксис:

MySQL поддерживает следующие синтаксисы JOIN для table_references (ссылка на таблицу также известна как выражение соединения.) Часть операторов SELECT и операторов UPDATE и DELETE для нескольких таблиц:

 table_references:
    escaped_table_reference [, escaped_table_reference] ...
escaped_table_reference:
    табличная_ссылка
  | {OJ table_reference}
табличная_ссылка:
    table_factor
  | join_table
table_factor:
    tbl_name [PARTITION (имя_раздела)] 
        [[AS] псевдоним] [index_hint_list]
  | table_subquery [AS] псевдоним
  | (table_references)
join_table:
    table_reference [INNER | CROSS] JOIN table_factor [join_condition]
  | table_reference STRAIGHT_JOIN table_factor
  | table_reference STRAIGHT_JOIN table_factor ON conditional_expr
  | table_reference { LEFT | RIGHT} [ OUTER ] JOIN table_reference join_condition
  | table_reference NATURAL [{LEFT | RIGHT} [OUTER]] JOIN table_factor
join_condition:
    ON conditional_expr
  | ИСПОЛЬЗОВАНИЕ (column_list)
index_hint_list:
    index_hint [, index_hint] ...
index_hint:
    USE {INDEX | KEY}
      [FOR {JOIN | ORDER BY | GROUP BY}] ([index_list])
  | IGNORE {INDEX | KEY}
      [FOR {JOIN | ORDER BY | GROUP BY}] (index_list)
  | СИЛА {ИНДЕКС | КЛЮЧ}
      [FOR {JOIN | ORDER BY | GROUP BY}] (index_list)
index_list:
    index_name [, index_name] ... 

Предположим: 1st_table LEFT JOIN 2nd_table СОЕДИНЕНИЕ

В MySQL LEFT JOIN таблица 2nd_table зависит от таблицы 1st_table и всех таблиц, от которых зависит 1st_table, а также от таблицы 1st_table зависит от всех таблиц, которые используются в условии LEFT JOIN, кроме 2nd_table. Условие LEFT JOIN используется, чтобы решить, как извлечь строки из таблицы 2nd_table.

Если в 1st_table есть строка, соответствующая предложению WHERE, но в 2nd_table нет строки, соответствующей условию ON, генерируется дополнительная строка 2nd_table, в которой для всех столбцов установлено значение NULL.

Так, в случае LEFT JOIN или LEFT OUTER JOIN, MySQL -

1. берет все выбранные значения из левой таблицы

2. объединяет их с именами столбцов (указанными в условии) из правой таблицы

3. получить соответствующие строки из обеих связанных таблиц.

4. устанавливает значение каждого столбца из правой таблицы в NULL, что не соответствует левой таблице.

Пример: MySQL LEFT JOIN

ЛЕВОЕ СОЕДИНЕНИЕ сохранит записи «левой» таблицы. MySQL начинается с левой таблицы. Для каждой строки из псевдонима bk1 MySQL сканирует таблицу, определяет, выполнено ли условие и возвращает имя книги. Для несопоставленной строки возвращается ноль. Каждый элемент в левой таблице будет показан в результате MySQL, даже если в другой таблице нет совпадений.

В этом примере таблица book_mast имеет псевдонимы bk1 и bk2. INNER JOIN, выполняемый в операторе, проверяет, меньше ли book_price в bk1, чем book_price в bk2, и является ли язык книги в bk2 немецким; если так, то оператор возвращает book_name, isbn_no, book_price, pub_lang из bk1.

Обратите внимание, что этот пример создает две виртуальные таблицы из book_mast и выполняет JOIN между ними.

Код:

SELECT bk1.book_name,bk1.isbn_no,bk1.book_price,bk1.pub_lang         
FROM  book_mast bk1          
LEFT JOIN book_mast bk2 ON bk1.book_price<bk2.book_price        
WHERE bk2.pub_lang='German';

Пример таблицы: book_mast :


Пример вывода:

 mysql> SELECT bk1.book_name, bk1.isbn_no, bk1.book_price, bk1.pub_lang         
    -> ОТ book_mast bk1          
    -> ЛЕВОЕ СОЕДИНЕНИЕ book_mast bk2 ON bk1.book_price <bk2.book_price        
    -> ГДЕ bk2.pub_lang = 'Немецкий';
+ ------------------------------------- + ----------- - + ------------ + ---------- +
| book_name | isbn_no | book_price | pub_lang |
+ ------------------------------------- + ----------- - + ------------ + ---------- +
| Введение в электродинамику | 0000979001 | 85,00 | Английский | 
| Понимание стальных конструкций | 0000979002 | 105,50 | Английский | 
| Продвинутая 3d графика | 0000979007 | 56,00 | Хинди | 
| Анатомия человека | 0000979008 | 50,50 | Немецкий | 
| Экспериментальный анализ кошек | 0000979011 | 95,00 | Французский | 
| Природа Мира | 0000979012 | 88,00 | Английский | 
| Окружающая среда - устойчивое будущее | 0000979013 | 100,00 | Немецкий | 
| Сети и Телекоммуникации | 00009790_16 | 45,00 | Французский | 
| Сети и Телекоммуникации | 00009790_16 | 45,00 | Французский | 
| Введение в электродинамику | 0000979001 | 85,00 | Английский | 
| Продвинутая 3d графика | 0000979007 | 56,00 | Хинди | 
| Анатомия человека | 0000979008 | 50,50 | Немецкий | 
| Экспериментальный анализ кошек | 0000979011 | 95,00 | Французский | 
| Природа Мира | 0000979012 | 88,00 | Английский | 
| Сети и Телекоммуникации | 00009790_16 | 45,00 | Французский | 
+ ------------------------------------- + ----------- - + ------------ + ---------- +
15 рядов в наборе (0,00 сек)

PHP скрипт

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-left-join php mysql examples | w3resource</title>
<meta name="description" content="example-left-join php mysql examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>The most costly book in book_mast table is:</h2>
<table class='table table-bordered'>
<tr>
<th>Name of the book</th><th>ISBN no</th><th>Price of the book</th><th>Language of the book</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT bk1.book_name,bk1.isbn_no,bk1.book_price,bk1.pub_lang
FROM  book_mast bk1
LEFT JOIN book_mast bk2 ON bk1.book_price<bk2.book_price
WHERE bk2.pub_lang="German"') as $row) {
echo "<tr>";
echo "<td>" . $row['book_name'] . "</td>";
echo "<td>" . $row['isbn_no'] . "</td>"; 
echo "<td>" . $row['book_price'] . "</td>";
echo "<td>" . $row['pub_lang'] . "</td>";
echo "</tr>";
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>

Посмотреть пример в браузере

Ключевые моменты для запоминания

Нажмите на следующее, чтобы получить презентацию слайдов -

«MySQL

LEFT JOIN: SQL и другие реляционные базы данных

Предыдущая: ВНУТРЕННЯЯ РЕШЕНИЕ
Далее: ПРАВИЛЬНОЕ СОЕДИНЕНИЕ

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code