O comando INNER JOIN é utilizado para combinar dados de duas ou mais tabelas relacionadas.
Ele retorna somente os registros que possuem correspondência entre as tabelas envolvidas.
O INNER JOIN compara uma coluna de uma tabela com uma coluna de outra tabela através da condição ON.
Tabela Clientes
ID
↓
Tabela Pedidos
Cliente_ID
SELECT
tabela1.coluna,
tabela2.coluna
FROM tabela1
INNER JOIN tabela2
ON tabela1.id = tabela2.id;
CLIENTES
+----+----------+
| ID | Nome |
+----+----------+
| 1 | Ana |
| 2 | Carlos |
| 3 | Pedro |
+----+----------+
PEDIDOS
+----+------------+-------+
| ID | Cliente_ID | Valor |
+----+------------+-------+
| 1 | 1 | 500 |
| 2 | 2 | 700 |
| 3 | 5 | 300 |
+----+------------+-------+
SELECT
clientes.nome,
pedidos.valor
FROM clientes
INNER JOIN pedidos
ON clientes.id = pedidos.cliente_id;
Resultado:
Ana | 500
Carlos | 700
O pedido do cliente ID 5 não aparece porque não existe cliente correspondente.
SELECT
c.nome,
p.valor
FROM clientes c
INNER JOIN pedidos p
ON c.id = p.cliente_id;
Alias deixam a consulta mais simples e organizada.
SELECT
clientes.nome,
produtos.nome
FROM clientes
INNER JOIN pedidos
ON clientes.id = pedidos.cliente_id
INNER JOIN produtos
ON pedidos.produto_id = produtos.id;
Permite consultar informações relacionadas em várias tabelas.
| INNER JOIN | CROSS JOIN |
|---|---|
| Relaciona dados | Combina tudo |
| Usa condição ON | Não usa ON |
| Retorna correspondências | Retorna produto cartesiano |
| Sistema | Relacionamento |
|---|---|
| E-commerce | Clientes e pedidos |
| Banco | Clientes e contas |
| Escola | Alunos e matrículas |
| Hospital | Pacientes e consultas |
| Erro | Problema |
|---|---|
| Esquecer condição ON | Produto cartesiano |
| Relacionar campos errados | Dados incorretos |
| Usar tabelas sem relacionamento | Consulta sem sentido |
| Selecionar colunas duplicadas | Resultado confuso |