Domingo 19 Mai 2024

Você pode usar uma INNER JOIN em uma instrução SELECT para recuperar apenas as linhas que atendem às condições de JOIN em cada tabela especificada.
Você pode solicitar uma INNER JOIN, executando uma instrução SELECT na qual você especifica as tabelas nas quais deseja unir a cláusula FROM e especifica uma cláusula WHERE ou uma cláusula ON para indicar a condição de JOIN. A condição de JOIN pode ser qualquer condição de pesquisa simples ou composta que não contenha uma referência de subconsulta.

Exemplo de tabela de PEÇAS

PART PROD# SUPPLIER
WIRE 10 ACWF
OIL 160 WESTERN_CHEM
MAGNETS 10 BATEMAN
PLASTIC 30 PLASTIK_CORP
BLADES 205 ACE_STEEL

 

Exemplo de tabela PRODUCTS

PROD# PRODUCT PRICE
505 SCREWDRIVER 3.70
30 RELAY 7.55
205 SAW 18.90
10 GENERATOR 45.75

 

Você pode juntar as tabelas PARTS e PRODUCTS na coluna PROD# para formar uma tabela de peças com seus fornecedores e os produtos que utilizam as peças. Considere as duas instruções SELECT a seguir:

 SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
  FROM PARTS, PRODUCTS 
 WHERE PARTS.PROD# = PRODUCTS.PROD#;

 SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
FROM PARTS INNER JOIN PRODUCTS ON PARTS.PROD# = PRODUCTS.PROD#;

Qualquer uma dessas declarações dá este resultado:

PART SUPPLIER PROD# PRODUCT
WIRE ACWF 10 GENERATOR
MAGNETS BATEMAN 10 GENERATOR
BLADES ACE_STEEL 205 SAW
PLASTIC PLASTIK_CORP 30 RELAY
  • Uma peça na tabela PARTS (OIL) tem um número de produto (160) que não está na tabela PRODUCTS. Um produto (505, CHAVE DE FENDA) não possui peças listadas na tabela PEÇAS. OIL e SCREWDRIVER não aparecem no resultado da JOIN.
  • A sintaxe explícita expressa que essa JOIN é uma JOIN interna. Você pode usar INNER JOIN na cláusula FROM em vez da vírgula. ON (em vez de WHERE) especifica a condição de JOIN quando você associa explicitamente tabelas na cláusula FROM.
  • Se você não especificar uma cláusula WHERE na primeira forma da consulta, a tabela de resultados conterá todas as combinações possíveis de linhas para as tabelas identificadas na cláusula FROM. Você pode obter o mesmo resultado especificando uma condição de JOIN que é sempre verdadeira na segunda forma da consulta.
    Considere esta consulta:

SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
  FROM PARTS INNER JOIN PRODUCTS
    ON 1=1;

O número de linhas na tabela de resultados é o produto do número de linhas em cada tabela:

PART SUPPLIER PROD# PRODUCT
WIRE ACWF 10 SCREWDRIVER
WIRE ACWF 10 RELAY
WIRE ACWF 10 SAW
WIRE ACWF 10 GENERATOR
OIL WESTERN_CHEM 160 SCREWDRIVER
OIL WESTERN_CHEM 160 RELAY
OIL WESTERN_CHEM 160 SAW
OIL WESTERN_CHEM 160 GENERATOR
...      

 

Você pode especificar condições de junção mais complicadas para obter diferentes conjuntos de resultados. Para eliminar os fornecedores que começam com a letra A da tabela de peças, fornecedores, números de produtos e produtos, escreva uma consulta como o exemplo a seguir:

SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
  FROM PARTS INNER JOIN PRODUCTS
    ON PARTS.PROD# = PRODUCTS.PROD#
   AND SUPPLIER NOT LIKE 'A%';

O resultado da consulta são todas as linhas que não possuem um fornecedor que começa com A:

PART SUPPLIER PROD# PRODUCT
MAGNETS BATEMAN 10 GENERATOR
PLASTIC PLASTIK_CORP 30 RELAY