INNER JOIN, LEFT JOIN, RIGHT JOIN
INNER JOIN
Em muitos casos, você poderá precisar apresentar um resultado o qual não está em apenas uma tabela, então você utiliza o INNER JOIN para fazer esse relacionamento das tabelas, fazendo da seguinte forma, como você sabe, ou deveria saber, quando duas tabelas estão interligadas, de alguma forma, precisa-se de um campo comum entre ambas (chave estrangeira).
Por exemplo:
Tenho uma escola com várias unidades e criei uma secretaria virtual. Nessa secretaria virtual, tenho os alunos cadastrados, porém eu preciso saber qual é a unidade em que esse aluno estuda. Possuímos aqui pelo menos duas tabelas, Aluno e Unidade, onde o relacionamento é um-para-muitos, porque um aluno só pode estar matriculado em uma unidade, porém uma unidade possui vários alunos. Eles se relacionam da seguinte forma, a tabela aluno tem um campo que se relaciona diretamente com o campo do código da unidade na tabela unidade, não sendo obrigatório os dois campos terem o mesmo nome, sendo apenas obrigatório os dois terem o mesmo tipo, se você não conhece SQL pode parecer complicado, mas posso assegurar-lhe que não é.
É nesse caso, em que o INNER JOIN vai ser usado, Veja:
$SQL = "SELECT Aluno.nome, Unidade.unidade";Seleciona o campo nome da tabela aluno e campo unidade da tabela unidade
$SQL .= " FROM Aluno";
A origem é a tabela Aluno. Isso significa que a tabela Aluno é o lado UM de um relacionamento, e com isso, A pesquisa é feita mais rápida;Você poderia colocar a tabela Unidade como origem.
$SQL .= " INNER JOIN Unidade";
A tabela Aluno será ligada a tabela Unidade.
$SQL .= " ON Aluno.cod_unidade = Unidade.cod_unidade";
Faz-se aqui o relacionamento das tabelas.
$SQL .= " ORDER BY Aluno.Nome";
Coloquei que a pesquisa vai ser exibido na ordem alfabética dos nomes dos alunos.
Ps.: Fiz essa pesquisa com o php, por isso está lá um .=, pois isso no php significa que estou concatenando a string SQL.
*Foi um exemplo simples, claro que nesse exemplo precisaria de mais tabelas.
Junto com o INNER JOIN, existem ainda o LEFT JOIN e o RIGHT JOIN, que funcionam de maneira semelhante. O INNER JOIN, faz o relacionamento entre duas tabelas e depois exibe o que está nas duas tabelas, já o LEFT JOIN faz a mesma coisa, porém só exibe os dados da tabela da esquerda (a primeira tabela que foi declarada) e o RIGHT JOIN, dou-lhe uma bala juquinha se você acertar…
Exatamente o que você pensou, faz o mesmo que o LEFT JOIN, porém exibe apenas os dados da tabela da direita (a segunda tabela que foi declarada).
Com isso despeço-me, até a próxima