В предыдущих обсуждениях и примерах мы изучали извлечение из одной таблицы или извлечение нескольких значений из нескольких источников. Большинство реальных операций с данными гораздо более сложны и требуют агрегирования, сравнения и извлечения из нескольких таблиц.
СОЕДИНЕНИЯ позволяют объединять две или более таблиц в один объект. Они используются через операторы SELECT, UPDATE и DELETE.
Просмотрите общий синтаксис оператора, использующего JOIN, как показано ниже:
SELECT column FROM table_name1 INNER JOIN table_name2 ON table_name1.column = table_name2.column;
Обратите внимание, что старый синтаксис для JOINS использовал неявные соединения, а не ключевые слова. Можно использовать предложение WHERE для достижения объединения, но ключевые слова работают лучше всего для удобочитаемости, обслуживания и рекомендаций.
Соединения бывают разных форм, таких как левое соединение, правое соединение или внутреннее соединение. Различные типы объединения предлагают различные типы агрегации на основе общих значений или характеристик.
Используйте JOIN в командной строке или с помощью скрипта PHP.
Командная строка
В командной строке просто используйте стандартную инструкцию —
root@host# mysql -u root -p password; Enter password:******* mysql> use PRODUCTS; Database changed mysql> SELECT products.ID_number, products.Nomenclature, inventory.inventory_ct FROM products INNER JOIN inventory ON products.ID_numbeer = inventory.ID_number; +-------------+----------------+-----------------+ | ID_number | Nomenclature | Inventory Count | +-------------+----------------+-----------------+ | 12345 | Orbitron 4000 | 150 | +-------------+----------------+-----------------+ | 12346 | Orbitron 3000 | 200 | +-------------+----------------+-----------------+ | 12347 | Orbitron 1000 | 0 | +-------------+----------------+-----------------+
PHP скрипт с использованием JOIN
Используйте функцию mysql_query () для выполнения операции соединения —
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT a.product_id, a.product_manufacturer, b.product_count FROM products_tbl a, pcount_tbl b WHERE a.product_manufacturer = b.product_manufacturer'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Manufacturer:{$row['product_manufacturer']} <br> ". "Count: {$row['product_count']} <br> ". "Product ID: {$row['product_id']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?>
При успешном извлечении данных вы увидите следующий вывод: