Dúvidas Gerais

Gravatar de lgveronese lgveronese Tópico publicado em
28/09/2009, 18:28:27

Pesquisa em mais de uma tabela

Boa noite a todos,

Estou fazendo um sistema e estou com uma grande dúvida.. lá vai..

Preciso consultar quantas "inserções" determinado usuário realizou.. sendo que essas inserções estão em tabelas diferentes..

Não sou lá muito expriente em consulta a Banco de Dados.. andei pesquisando sobre FK e INNER JOIN.. não sei se essas seriam as soluções mais adequadas ao meu caso.

Alguem pode me dar um luz quanto a isso? E como proceder de tal forma no Spaghetti?

Desde já agradeço!

Abraços!

Gravatar de Osmar Alves Osmar Alves Resposta publicada em
29/09/2009, 09:20:20

Pesquisa em mais de uma tabela

lgveronese esses usuários que você falou são os usuários do SGBD* ou do seu sistema?

Se for do sistema você vai ter que faze como se fosse um gerador de logs.

Se for do SGBD ai eu não sei, teria que dar uma pesquisada no nosso amigo de todo dia.

* Sistema gerenciador de banco de dados.

Gravatar de Osmar Alves Osmar Alves Resposta publicada em
29/09/2009, 09:21:35

Pesquisa em mais de uma tabela

Nossa eu usei o tamanho da fonte ali no "small" mais fico muito pequeno, ahsuasha.

La ta escrito assim: "* Sistema gerenciador de banco de dados."

Gravatar de lgveronese lgveronese Resposta publicada em
29/09/2009, 11:39:15

Pesquisa em mais de uma tabela

É do meu próprio sistema..

Exemplo:

O Usuario1 cadastrou 2 livros (tabela_livros) e 3 DVDs (tabela_dvds)
Eu gostaria de dar uma "pontuação" para cada usuário com base no número de inserções que o mesmo realizou, aqui no caso: 5 pontos.

Eu fiz dessa forma:

Criei um Model pra cada Tabela do DB e dentro do Controller "Principal" eu utilizei o $uses para chamar todas as tabelas necessárias..

Depois disso Utilizei o count() para contar o numero de registros e dar a tal "pontuação".

Funciona.. mas eu não sei se esse seria o modo mais adequado a essas situações nem se com um número grande de registros ele poderia causar uma sobrecarga no sistema..

Por isso a curiosidade pelas FK's e pelo INNER JOIN.

Eu queria uma forma de pesquisar em todas a tabelas pelo critério estabelecido sem precisar realizar vários "SELECT... from..."

Tem algum jeito mais adequado para essas ocasiões?

Eu estava lendo sobre o hasOne e hasMany, mas não se se enquadra no meu caso.

Gravatar de Osmar Alves Osmar Alves Resposta publicada em
29/09/2009, 11:59:31

Pesquisa em mais de uma tabela

Hmm....

Bem, pensando rápido aqui o que daria pra fazer é criar um campo do tipo int na tabela dos usuários pra armazenar quantos livros ele tem cadastrado. Ai a cada novo cadastro de um livro daria um incremento nesse campo. Ao deletar decrementava-o.

Não sei se seria o melhor jeito, mas seria bem mais rápido do que dar um count() nas tabelas.

Gravatar de Klawdyo Klawdyo Resposta publicada em
29/09/2009, 23:56:40

Pesquisa em mais de uma tabela

$sql = "select count(id) as n_livros from livros where users_id=1";

conta todos os livros do usuario tal e retorna na variavel n_livros.
É extremamente rápido, pois é feito diretamente pelo mysql. Não há necessidade de criar uma outra tabela para isso. Nunca devemos armazenar dados que podem ser calculados. Isso é redundante.

Se você usar a versão 0.1.x, chame assim
$this->Livros->fetchResults(sql);

Se for a 0.2

$this->Livros->fetch($sql);

Gravatar de Osmar Alves Osmar Alves Resposta publicada em
30/09/2009, 09:01:07

Pesquisa em mais de uma tabela

Legal hein Klawdyo, tinha esquecido dessa opção... Parabéns...

Você deve estar logado para responder a um tópico ou adicionar um novo.
Efetue login ou Registre-se para participar das discussões.