Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Robson Silva

Inner join ou buscar cada registro em cada tabela?

Recommended Posts

Bom dia.

Já tem um tempo que eu estou estudando mvc, mas principalmente estou tentando trabalhar com POO.

Só que as vezes eu fico na dúvida de como trazer os registros do banco de dados.

Geralmente quando eu tenho que fazer uma listagem de um produto e este produto tem uma categoria eu poderia fazer na classe ProdutoDAO:

 

function get_produtos()
{
   $sql = 'SELECT produtos.*, produtos_categorias.nome as categoria FROM produtos LEFT JOIN produtos_categorias ON produtos.id_categoria = produtos_categorias';
   ....
}

 

O problema que eu trabalho com classes e a classe produto não tem o campo "categoria" que é o nome da categoria.

E na minha cabeça a classe ProdutoDAO só retorna produtos e a classe ProdutoCategoriaDao só retorna categorias de produtos.

 

Então se eu tivesse que listar os produtos primeiro eu pegaria todos os produtos e após para cada produto eu pegaria cada categoria.

O problema que pra fazer uma listagem desse jeito terei que fazer muitos acessos ao banco de dados, para cada produto uma busca para o nome da categoria.

 

Gostaria de saber qual é o melhor jeito de fazer isso, se vocês também tem essa dúvida

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta parecendo que o problema é com PHP não com SQL....

Agora uma coisa estranha... se todos os produtos tem categoria atribuída pq esta fazendo left join não inner???

 

Abraços

Marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi só 1 exemplo, o que gostaria de saber é se eu trabalhar com classes Data Acess Object (DAO) eu posso buscar uma categoria de produto dentro da classe ProdutoDAO ou a classe ProdutoDAO só retorna produtos?

Porque a minha classe Produto não possui o campo nome da categoria, somente id_categoria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.