Ir para conteúdo

Arquivado

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

luan Fauth

[Resolvido] count + top

Recommended Posts

Olá galera, estou tendo uma grande dificuldade para gerar um SQL em que consulto livros de uma biblioteca, pego todos os livros referentes a um assunto e quero fazer uma consulta que retorne aqueles que foram mais retirados desde seu cadastro no sistema...

 

 

meu SQL está retornando os dados dos livros e em seguida com um COUNT conto quantas vezes o livro foi retirado, em seguida ordeno por RETIRADAS DESC, o problema é que não estou mostrando também aqueles que nunca ou que foram retirados muito poucas vezes, gostaria de diminuir o tamanho da minha consulta para os 20+ ou 30+... TOP ajudaria aqui, mas não sei como utilizar juntamente com o COUNT, pois o campo que estou utilizando pra contar as retiradas é a data de emprestimo.

 

segue SQL apenas com o count:


select distinct 
livro.codigo, disciplina.codcurso, livro.titulo, localidade.local as Cidade, editora.editor as editora, livro.ano,
(select count(emprestimo.dteprestimo) from emprestimo where emprestimo.codpublic = livro.codigo) as retiradas

from
livro,
disciplina,
editora,
localidade,
emprestimo

order by retiradas desc

é viavel algo como um select top count()???? comofaz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

colocando o top na primeira instrução sql não resolve, pois a ordem vai continuar sendo por retiradas

select TOP 30 distinct 
livro.codigo, disciplina.codcurso, livro.titulo, localidade.local as Cidade, editora.editor as editora, livro.ano,
(select count(emprestimo.dteprestimo) from emprestimo where emprestimo.codpublic = livro.codigo) as retiradas

from
livro,
disciplina,
editora,
localidade,
emprestimo

order by retiradas desc

se estiver usando o sql server 2008 podes fazer o top dinâmico:

DECLARE @TOP INT
SET @TOP = 20
select TOP(@TOP)* from table ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

colocando o top na primeira instrução sql não resolve, pois a ordem vai continuar sendo por retiradas

select TOP 30 distinct 
livro.codigo, disciplina.codcurso, livro.titulo, localidade.local as Cidade, editora.editor as editora, livro.ano,
(select count(emprestimo.dteprestimo) from emprestimo where emprestimo.codpublic = livro.codigo) as retiradas

from
livro,
disciplina,
editora,
localidade,
emprestimo

order by retiradas desc

se estiver usando o sql server 2008 podes fazer o top dinâmico:

DECLARE @TOP INT
SET @TOP = 20
select TOP(@TOP)* from table ....

 

 

Utilizo QSL Server 2005, mas não funciona... tentei de todos os jeitos que sabia, pedi ajuda pra ver se alguém sabe alguma maneira diferente de fazer isto...

 

=]

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual erro retorna colocando o top na primeira instrução sql

select TOP 30 distinct 
livro.codigo, disciplina.codcurso, livro.titulo, localidade.local as Cidade, editora.editor as editora, livro.ano,
(select count(emprestimo.dteprestimo) from emprestimo where emprestimo.codpublic = livro.codigo) as retiradas

from
livro,
disciplina,
editora,
localidade,
emprestimo

order by retiradas desc

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual erro retorna colocando o top na primeira instrução sql

select TOP 30 distinct 
livro.codigo, disciplina.codcurso, livro.titulo, localidade.local as Cidade, editora.editor as editora, livro.ano,
(select count(emprestimo.dteprestimo) from emprestimo where emprestimo.codpublic = livro.codigo) as retiradas

from
livro,
disciplina,
editora,
localidade,
emprestimo

order by retiradas desc

 

 

haha... desculpa, eu estava escrevendo o código com um erro, tava acusando sintaxe errada mais para frente no código...

 

mas consegui fazer com o top na primeira sentença do select... então ficou assim:

 


select distinct TOP 30
livro.codigo, 
disciplina.codcurso, 
livro.titulo, 
localidade.local as Cidade, 
editora.editor as editora, 
livro.ano,
    (select 
        count(emprestimo.dteprestimo) 
    from 
        emprestimo 
    where 
        emprestimo.codpublic = li.codigo) as retiradas

from
livro li(nolock),
disciplina,
editora,
localidade,
emprestimo

order by retiradas desc

 

Obrigado pela ajuda eriva_br!

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.