MariaDB - Junte-se

Em discussões e exemplos anteriores, examinamos a recuperação de uma única tabela ou a recuperação de vários valores de várias fontes. A maioria das operações de dados do mundo real é muito mais complexa, exigindo agregação, comparação e recuperação de várias tabelas.

JOINspermitir a fusão de duas ou mais tabelas em um único objeto. Eles são empregados por meio de instruções SELECT, UPDATE e DELETE.

Reveja a sintaxe geral de uma instrução empregando um JOIN, conforme mostrado abaixo -

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

Observe que a sintaxe antiga para JOINS usava junções implícitas e nenhuma palavra-chave. É possível usar uma cláusula WHERE para obter uma junção, mas as palavras-chave funcionam melhor para facilitar a leitura, manutenção e práticas recomendadas.

JOINs vêm em várias formas, como uma junção à esquerda, uma junção à direita ou uma junção interna. Vários tipos de junção oferecem diferentes tipos de agregação com base em valores ou características compartilhadas.

Empregue um JOIN no prompt de comando ou com um script PHP.

O Prompt de Comando

No prompt de comando, basta usar uma instrução padrão -

[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 usando JOIN

Use o mysql_query() função para realizar uma operação de junção -

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

Na recuperação de dados bem-sucedida, você verá a seguinte saída -

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