Ir ao conteúdo
  • Cadastre-se
fdsmello

Ajuda nessa agregração com SUM

Recommended Posts

Sou novo em banco de dados estou com problema nessa sum.

Ela não mostra nada.

create table livro(	isbn integer ,	nome_livro  varchar(30) ,	cod_editora	integer,	qtdlivros integer ,	cod_assunto	integer);create table editora(	cod_editora integer ,	nome_editora varchar(30) );create table assunto(	cod_assunto	integer,	nome varchar (30)		);--criaçao de chave primariaalter table assunto add constraint "pkAssunto" primary key ("cod_assunto");alter table livro add constraint "pklivro" primary key ("isbn");alter table editora add constraint "pkeditora" primary key ("cod_editora");--criaçao de chave estrangeiraalter table livro add constraint "fkEditoraLivro"	foreign key ("cod_editora") REFERENCES editora ("cod_editora");alter table livro add constraint "fkAssuntoLivro"	foreign key ("cod_assunto") REFERENCES assunto ("cod_assunto");--insetinsert into editora (cod_editora,nome_editora) values (1,'Abril');insert into editora (cod_editora,nome_editora) values (2,'Globo');insert into editora (cod_editora,nome_editora) values (3,'Saraiva');insert into assunto (cod_assunto,nome) values (1,'infantil');insert into assunto (cod_assunto,nome) values (2,'tecnologia');insert into assunto (cod_assunto,nome) values (3,'adulto');insert into assunto (cod_assunto,nome) values (4,'teen');insert into assunto (cod_assunto,nome) values (5,'gerais');insert into assunto (cod_assunto,nome) values (6,'Humor');insert into livro(isbn,nome_livro,cod_editora,cod_assunto,qtdlivros) values (1,'branca de neve',1,1,20);insert into livro(isbn,nome_livro,cod_editora,cod_assunto,qtdlivros) values (2,'Harry potter',1,4,30);insert into livro(isbn,nome_livro,cod_editora,cod_assunto,qtdlivros) values (3,'tecmundo',1,2,100);insert into livro(isbn,nome_livro,cod_editora,cod_assunto,qtdlivros) values (4,'playboy',2,3,10);insert into livro(isbn,nome_livro,cod_editora,cod_assunto,qtdlivros) values (5,'exame',3,5,40);insert into livro(isbn,nome_livro,cod_editora,cod_assunto,qtdlivros) values (6,'arte de guerra',2,5,20);insert into livro(isbn,nome_livro,cod_editora,cod_assunto,qtdlivros) values (7,'Harry potter',1,4,30);--Quantidade de livro por editora fazer dpsSELECT nome_editora, sum(qtdlivros)-- conta o valor total From Editora E,Livro LWhere nome_editora = cod_editoraGroup By nome_editora

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso ninguém responda depois eu vejo com mais tempo e respondo....

 

Só sei que esse FROM com várias tabelas, eu daria um soco em quem fizesse isso aqui na empresa ^^

 

Use LEFT JOIN, INNER JOIN, etc... ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Só sei que esse FROM com várias tabelas, eu daria um soco em quem fizesse isso aqui na empresa ^^

 

Use LEFT JOIN, INNER JOIN, etc... ^^

 

Não é bem assim. Não há nada de errado em utilizar mais de uma tabela no FROM. eu mesmo.. no meu TCC fui obrigado a utilizar mais de uma tabela no FROM para evitar dados repetidos na consulta.

Um detalhe: o inner join só funciona SE e somente SE o engine da tabela for do tipo  innoDB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo DIF, não há nada de errado, só não acho "legal" por assim dizer, bem como alguns colocam condições secundárias no JOIN, e outros preferem fazer isso no where... frescuras a parte.

 

E quanto ao INNER JOIN, ele funciona perfeitamente em MYISAM também. (só conheço innodb e myisam, então quanto a outros engines não posso afirmar)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deve esquecer que o MyISAM não tem controle. por isso se for usar  ele... não precisa perder tempo utilizando chaves estrangeiras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo,

 

O problema é porque você esta comparando Nome da Editora com o Código da Editora, então o join não retorna nenhum registro.

Where nome_editora = cod_editora

O amigo Erciley Junior montou o join corretamente.

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanto @smarthome como, @Erciley Junior estão corretos.

Mas no schema do @fdsmello  está com erro grotesco, o que é normal em iniciantes.

 

veja estas linhas:

--criaçao de chave primariaalter table assunto add constraint "pkAssunto" primary key ("cod_assunto");alter table livro add constraint "pklivro" primary key ("isbn");alter table editora add constraint "pkeditora" primary key ("cod_editora");--criaçao de chave estrangeiraalter table livro add constraint "fkEditoraLivro"	foreign key ("cod_editora") REFERENCES editora ("cod_editora");alter table livro add constraint "fkAssuntoLivro"	foreign key ("cod_assunto") REFERENCES assunto ("cod_assunto");

Como pode ver,  você está colocando entre aspas, os campos.  faça desta maneira:

alter table assunto add constraint pkAssunto primary key (cod_assunto);alter table livro add constraint pklivro primary key (isbn);alter table editora add constraint pkeditora primary key (cod_editora);alter table livro add constraint fkEditoraLivroforeign key (cod_editora) REFERENCES editora (cod_editora);alter table livro add constraint fkAssuntoLivroforeign key (cod_assunto) REFERENCES assunto (cod_assunto);

 

Agora teste a instrução SQL passada por @Erciley Junior

 

Veja o exemplo funcionando:  http://sqlfiddle.com/#!2/ce2ca/1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo,

 

O problema é porque você esta comparando Nome da Editora com o Código da Editora, então o join não retorna nenhum registro.

Where nome_editora = cod_editora

O amigo Erciley Junior montou o join corretamente.

 

Abs.

Também acho que este é o erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×