MariaDB - Dołącz
W poprzednich dyskusjach i przykładach badaliśmy pobieranie z jednej tabeli lub pobieranie wielu wartości z wielu źródeł. Większość rzeczywistych operacji na danych jest znacznie bardziej złożonych i wymaga agregacji, porównania i pobierania z wielu tabel.
JOINspozwalają na scalenie dwóch lub więcej tabel w jeden obiekt. Są one wykorzystywane przez instrukcje SELECT, UPDATE i DELETE.
Przejrzyj ogólną składnię instrukcji wykorzystującej JOIN, jak pokazano poniżej -
SELECT column
FROM table_name1
INNER JOIN table_name2
ON table_name1.column = table_name2.column;
Zwróć uwagę na starą składnię JOINS, która używała niejawnych złączeń i żadnych słów kluczowych. Możliwe jest użycie klauzuli WHERE, aby uzyskać sprzężenie, ale słowa kluczowe działają najlepiej, jeśli chodzi o czytelność, konserwację i najlepsze praktyki.
SPRZĘŻENIA występują w wielu formach, takich jak sprzężenie lewe, sprzężenie prawe lub sprzężenie wewnętrzne. Różne typy złączeń oferują różne typy agregacji w oparciu o wspólne wartości lub cechy.
Użyj JOIN w wierszu poleceń lub za pomocą skryptu PHP.
Wiersz polecenia
W wierszu polecenia po prostu użyj standardowej instrukcji -
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 |
+-------------+----------------+-----------------+
Skrypt PHP za pomocą JOIN
Użyj mysql_query() funkcja do wykonania operacji łączenia -
<?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);
?>
Po pomyślnym pobraniu danych zobaczysz następujący wynik -
ID Number: 12345
Nomenclature: Orbitron 4000
Inventory Count: 150
--------------------------------------
ID Number: 12346
Nomenclature: Orbitron 3000
Inventory Count: 200
--------------------------------------
ID Number: 12347
Nomenclature: Orbitron 1000
Inventory Count: 0
--------------------------------------
mysql> Fetched data successfully