✅ Explicação
INNER JOIN
serve para combinar registros de duas tabelas quando existe correspondência entre os valores das colunas relacionadas. Só entra no resultado a linha que tem par nas duas tabelas. Se não bater de um lado com o outro, fica de fora.
📌 Usos mais comuns
-
Juntar tabelas por um campo comum (ex: código do produto, ID do cliente).
-
Cruzar dados que fazem sentido apenas quando combinados.
-
Montar relatórios completos a partir de tabelas separadas.
🧾 Sintaxe
Forma implícita (estilo antigo, ainda funciona):
SELECT campos
FROM TABELA1, TABELA2
WHERE TABELA1.CAMPO = TABELA2.CAMPO;
Forma explícita (recomendada):
SELECT campos
FROM TABELA1
INNER JOIN TABELA2
ON TABELA1.CAMPO = TABELA2.CAMPO;
🧪 Exemplo prático
🧱 Tabela: PARTS
PART | PROD# | SUPPLIER |
---|---|---|
WIRE | 10 | ACWF |
OIL | 160 | WESTERN_CHEM |
MAGNETS | 10 | BATEMAN |
PLASTIC | 30 | PLASTIK_CORP |
BLADES | 205 | ACE_STEEL |
🧱 Tabela: PRODUCTS
PROD# | PRODUCT | PRICE |
---|---|---|
505 | SCREWDRIVER | 3.70 |
30 | RELAY | 7.55 |
205 | SAW | 18.90 |
10 | GENERATOR | 45.75 |
Consulta:
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
FROM PARTS
INNER JOIN PRODUCTS
ON PARTS.PROD# = PRODUCTS.PROD#;
Resultado:
PART | SUPPLIER | PROD# | PRODUCT |
---|---|---|---|
WIRE | ACWF | 10 | GENERATOR |
MAGNETS | BATEMAN | 10 | GENERATOR |
BLADES | ACE_STEEL | 205 | SAW |
PLASTIC | PLASTIK_CORP | 30 | RELAY |
Obs.: OIL
e SCREWDRIVER
não aparecem porque não têm correspondência.
⚠️ Regras importantes
-
Sempre especifique a condição de junção no
ON
, senão vira produto cartesiano (todas combinações possíveis). -
Use alias (
P
,PR
, etc.) pra clarear quando há muitos campos com o mesmo nome. -
Pode adicionar mais condições com
AND
para refinar o resultado.
💡 Dicas
-
A forma explícita com
INNER JOIN ... ON ...
é mais legível e mais segura que a antiga com vírgula. -
Use
NOT LIKE
,>
,IN
etc., na cláusulaON
ouWHERE
para filtrar durante ou após a junção.
📚 Exemplo com filtro:
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
FROM PARTS
INNER JOIN PRODUCTS
ON PARTS.PROD# = PRODUCTS.PROD#
AND SUPPLIER NOT LIKE 'A%';
Resultado:
PART | SUPPLIER | PROD# | PRODUCT |
---|---|---|---|
MAGNETS | BATEMAN | 10 | GENERATOR |
PLASTIC | PLASTIK_CORP | 30 | RELAY |
✅ Conclusão
O INNER JOIN
é o tipo mais comum de junção em SQL. Ideal pra quando você quer registros que batem certinho dos dois lados. Se não bateu, nem aparece. Use bem e evite tabelas soltas!