O join INNER JOIN

A palavra INNER JOIN retorna linhas quando existe o registro em ambas as tabelas.

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 JOIN

A tabela Pessoas
idsobrenomeprimeiro_nomeenderecocidade
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger


A tabela Pedidos
idnumeropessoa_id
1778953
2446783
3224561
4245621
53476415

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:

sobrenomeprimeiro_nomenumero
HansenOla22456
HansenOla24562
PettersenKari77895
PettersenKari44678

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

6 comentários:

  1. alguem sabe usar o inner join com 6 tabelas?

    ResponderExcluir
  2. Diorgenes, 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.

    ResponderExcluir
  3. olá... preciso fazer cadastro em duas tabelas ao mesmo tempo... como isso é possivel?

    ResponderExcluir
  4. Como faço para exibir este resultado da consulta no browser?

    ResponderExcluir
  5. boa tarde, alguem pode ajudar, ta dando erro no Inner join e não consigo resolver...

    public 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

    ResponderExcluir