Como combinar dados de múltiplas tabelas em uma única consulta
Os dados em bancos relacionais raramente ficam todos em uma única tabela. Informações de clientes ficam em clientes, pedidos ficam em pedidos, produtos ficam em produtos. Os JOINs são o que permitem combinar esses dados em uma única consulta.
Imagine que você quer saber o nome do cliente que fez cada pedido. Esses dados estão em tabelas diferentes, mas conectados pelo cliente_id:
Tabela clientes:
| id | nome |
|---|---|
| 1 | Ana Souza |
| 2 | Pedro Lima |
Tabela pedidos:
| id | cliente_id | total |
|---|---|---|
| 1 | 1 | 3500 |
| 2 | 1 | 179.80 |
| 3 | 2 | 199.90 |
O JOIN conecta as duas tabelas pela coluna em comum:
Carregando...
nome | total
-----------+--------
Ana Souza | 3500
Ana Souza | 179.80
Pedro Lima | 199.90
| Tipo | Retorna |
|---|---|
INNER JOIN | Apenas registros com correspondência nas duas tabelas |
LEFT JOIN | Todos da esquerda + correspondências da direita (NULL se faltar) |
RIGHT JOIN | Todos da direita + correspondências da esquerda (NULL se faltar) |
FULL OUTER JOIN | Todos os registros das duas tabelas |
Use sempre aliases para deixar o código mais limpo:
Carregando...
Quando duas tabelas têm colunas com o mesmo nome (como
id), qualifique sempre com o nome ou alias da tabela para evitar ambiguidade.