Ir para conteúdo

POWERED BY:

Arquivado

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

maomelov

query sql server

Recommended Posts

Boa Noite,

 

Tenho as seguintes tabelas:

 

Editoras – informação acerca das editoras;
i) Número da editora – valor numérico inteiro, chave primária; IDENTITY(1,1);
ii) Nome - texto, tamanho variável - 1000; obrigatório;
iii) Morada - texto, tamanho variável - 1000; obrigatório;
iv) Código postal - texto, tamanho fixo - 8; obrigatório;
v) Localidade - texto, tamanho variável - 1000; obrigatório;
vi) Telefone - texto, tamanho variável - 16; obrigatório; UNIQUE;
vii) Email - texto, tamanho 250; UNIQUE;
viii) Website - texto, tamanho variável - 1000;
ix) Responsável para contacto - texto, tamanho variável - 1000;

Edições – informação acerca das edições de cada obra;
i) Número da edição – valor numérico inteiro, chave primária; IDENTITY(1,1);
ii) Obra – chave externa – relação com tabela Obras;
iii) Editora – chave externa – relação com tabela Editoras;
iv) Data de lançamento – Data; obrigatório;

Livros – informação acerca de cada livro;
i) Número do livro - valor numérico inteiro, chave primária; IDENTITY(1,1);
ii) Edição - chave externa – relação com tabela Edições;
iii) Data de aquisição – Data; obrigatório; default value – GETDATE();
iv) Custo – MONEY, obrigatório; default value – 0; valor superior a zero;

Livros Requisitados
id_livro
id_requisicao

Preciso de criar uma view para obter os dados das duas editoras com maior número de livros requisitados;

 

tenho a seguinte sintaxe:

 

create view vw_20 as
select   top(2) tb_editoras.*
from   tb_editoras inner join tb_edicoes
on      tb_editoras.id_editora = tb_edicoes.id_editora
     inner join tb_livros
on      tb_edicoes.id_edicao = tb_livros.id_edicao
where   tb_livros.id_livro in
    (   
select top 100 percent id_livro from tb_livros_requisitados
group by id_livro
order by COUNT(id_requisicao) desc
    )   
go

 

nao tenho erro de sintaxe mas sim de lógica que nao consigo perceber qual é...a query nao retorna os valores correctos

 

podem ajudar pf?é muito urgente

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim:

create view vw_20 as
select   top(2) tb_editoras.*
from   tb_editoras inner join tb_edicoes
on      tb_editoras.id_editora = tb_edicoes.id_editora
     inner join tb_livros
on      tb_edicoes.id_edicao = tb_livros.id_edicao
where   tb_livros.id_livro in
    (   
select top 2 count(*) Total, id_livro from tb_livros_requisitados
group by id_livro
order by Total desc
    )   
go

ou assim:

create view vw_20 as
select   top(2) tb_editoras.*, (select count(*) from tb_livros_requisitados tbr where tbr.id_livro = tb_editoras.id_livro) Total
from   tb_editoras 
inner join tb_edicoes on      tb_editoras.id_editora = tb_edicoes.id_editora
inner join tb_livros on      tb_edicoes.id_edicao = tb_livros.id_edicao
order by Total desc
go

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.