Sintaxe do INNER JOIN
1:SELECT nome_coluna(s)
2:FROM nome_tabela1 alias_tabela_1
3:INNER JOIN nome_tabela2 alias_tabela_2
4:ON alias_tabela1.nome_coluna = alias_tabela2.nome_coluna
Exemplo de INNER JOINA tabela Pessoas
id | sobrenome | primeiro_nome | endereco | cidade |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
A tabela Pedidos
id | numero | pessoa_id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 15 |
Agora nos queremos listar todas as pessoas que tem pedidos:
1:SELECT
2: pes.sobrenome,
3: pes.primeiro_nome,
4: ped.numero
5:FROM Pessoas pes
6:INNER JOIN Pedidos ped
7:ON pes.id = ped.pessoa_id
8:ORDER BY pes.sobrenome
O resultado será o seguinte:
sobrenome | primeiro_nome | numero |
---|---|---|
Hansen | Ola | 22456 |
Hansen | Ola | 24562 |
Pettersen | Kari | 77895 |
Pettersen | Kari | 44678 |
A palavra INNER JOIN retorna linhas quando existe pelo menos um registro em ambas as tabelas. Se existem linhas na tabela Pessoas que não tem registros na tabela de Pedidos, estas linhas NÃO serão mostradas.
Fonte
Boa dica
ResponderExcluiralguem sabe usar o inner join com 6 tabelas?
ResponderExcluirDiorgenes, qual o seu problema especificamente? A principio não existe um limite para a quantidade de tabelas que você pode usar. A expressão seria algo assim: select * from ta a inner join tb b on b.id = ta.b_id inner join tc c on c.id = ta.c_id ... e assim por diante. Lembrando que se se qualquer uma das 6 tabelas não tiver o relacionamento (o valor referente ao inner join não for encontrado nenhuma vez) você não terá a linha correspondente no resultado. Para ter o resultado independente da existência do valor, você deve usar o left join.
ResponderExcluirolá... preciso fazer cadastro em duas tabelas ao mesmo tempo... como isso é possivel?
ResponderExcluirComo faço para exibir este resultado da consulta no browser?
ResponderExcluirescreve "echo"
Excluirboa tarde, alguem pode ajudar, ta dando erro no Inner join e não consigo resolver...
ResponderExcluirpublic function listar($cod_livro = false,$nome= false)
{
if(!empty($cod_livro))$this->db->where('cod_livro',$cod_livro);
if(!empty($nome))$this->db->where('a.nome',$nome);
$this->db->select('*');
$this->db->from('autor a');
$this->db->join('livro 1','a.cod_livro=1.cod','INNER');
$query = $this ->db->get();
return $query->result();
}//lista