MariaDB - Rejoindre

Dans les discussions et exemples précédents, nous avons examiné la récupération à partir d'une seule table ou la récupération de plusieurs valeurs à partir de plusieurs sources. La plupart des opérations de données réelles sont beaucoup plus complexes et nécessitent une agrégation, une comparaison et une extraction à partir de plusieurs tables.

JOINsautorise la fusion de deux ou plusieurs tables en un seul objet. Ils sont utilisés via les instructions SELECT, UPDATE et DELETE.

Passez en revue la syntaxe générale d'une instruction employant un JOIN comme indiqué ci-dessous -

SELECT column
FROM table_name1
INNER JOIN table_name2
ON table_name1.column = table_name2.column;

Notez que l'ancienne syntaxe de JOINS utilisait des jointures implicites et aucun mot clé. Il est possible d'utiliser une clause WHERE pour réaliser une jointure, mais les mots clés fonctionnent mieux pour la lisibilité, la maintenance et les meilleures pratiques.

Les jointures se présentent sous de nombreuses formes, telles qu'une jointure gauche, droite ou interne. Différents types de jointure offrent différents types d'agrégation basés sur des valeurs ou des caractéristiques partagées.

Utilisez un JOIN soit à l'invite de commande ou avec un script PHP.

L'invite de commandes

À l'invite de commande, utilisez simplement une instruction standard -

[email protected]# 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               |
+-------------+----------------+-----------------+

Script PHP utilisant JOIN

Utilisez le mysql_query() fonction pour effectuer une opération de jointure -

<?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);
?>

Lors de la récupération des données réussie, vous verrez la sortie suivante -

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