Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Sobre o join - Aula 8 - Relacionando produtos com categorias

Olá pessoal, estou com dificuldade para entender essa query. Alguém poderia me explicar melhor a seguinte linha de código?

$resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");

Porque os novos nomes (p.*), (c.nome) (c.id) (p.categoria_id)?

Eu fiz o primeiro curso de mysql aqui e não vi algo complicado assim.

Codigo completo:

function listaProdutos($conexao) {
    $produtos = array();
    $resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as 
        c on c.id=p.categoria_id");
    while($produto = mysqli_fetch_assoc($resultado)) {
        array_push($produtos, $produto);
    }
    return $produtos;
}
2 respostas
solução!

Vou explicar linha a linha para ficar mais fácil

  • select p.,c.nome as categoria_nome p. - representa todos os campos da tabela produtos, c.nome as categoria_nome - representa o nome da categoria.

  • from produtos as p indica que a tabela produtos receberá o alias (apelido) p e será usada na consulta.

  • join categorias as c on c.id=p.categoria_id indica que a tabela categorias receberá o alias c e que cada produto está vinculado a uma categoria

o id da tabela categoria (é a chave primária) e o categoria_id da tabela produtos (é a chave estrangeira) são usados para relacionar as duas tabelas.

resumindo, a consulta solicita todos os dados dos produtos e o nome das suas categorias.

Agora faz sentido. Muito obrigado Gabriel, ajudou muito.