Bruno Techera Postado Agosto 11, 2012 Denunciar Share Postado Agosto 11, 2012 Tenho uma tabela "Livros" e outra "Categorias" preciso realizar uma consulta SQL de modo que:-Exibir os nomes e preços dos livros com o maior preço de cada categoria<!DOCTYPE html PUBLIC "-//W3C// DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>teste</title> </head> <?php include "estilo1.inc"; include "dbconexao.php"; $sql = "SELECT categoria.cat_nome, MAX(livros.preço) AS maior_preco"; $sql = $sql . " FROM livros"; $sql = $sql . " INNER JOIN catergorias"; $sql = $sql . " ON categorias.id = livros.id_categoria"; $sql = $sql . " GROUP BY categorias.cat_nome"; $sql = $sql . " ORDER BY maior_preco"; $rs = mysql_query($sql,$conexao); ?> <body> <p>Sentença SQL: <strong><?php print $sql;?></strong></p> <table cellspacing="0"> <thead> <tr> <td>Categoria</td> <td align="right">Preço Máximo</td> </tr> </thead> <?php while ($reg = mysql_fetch_array($rs)) { $id_categoria = $reg["cat_nome"]; $maior_preco = $reg["maior_preco"]; ?> <tr> <td><?php print $id_categoria; ?></td> <td align="right">R$<?php print number_format($maior_preco, 2 , ',' , '.'); ?></td> </tr> <?php } ?> </body> </html> Eu consegui fazer a tabela mostrando o id da categoria e seu maior preço, mas quando quero mostrar o nome da categoria e seu maior preço da erro.Agradeço a ajuda. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fiote Postado Agosto 13, 2012 Denunciar Share Postado Agosto 13, 2012 Essa query ae de cima funciona? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Bruno Techera Postado Agosto 13, 2012 Autor Denunciar Share Postado Agosto 13, 2012 Acho que não me expliquei claramente. Abaixo vou colocar um código que consegui rodar.<!DOCTYPE html PUBLIC "-//W3C// DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Teste</title> </head> <?php include "estilo1.inc"; include "dbconexao.php"; $sql = "SELECT id_categoria, AVG(preço) AS media_preco"; $sql = $sql . " FROM livros"; $sql = $sql . " GROUP BY id_categoria"; //$sql = $sql . " ORDER BY media_preco"; $rs = mysql_query($sql,$conexao); $total_registros = mysql_num_rows($rs); ?> <body> <p>Sentença SQL:<strong><?php print $sql?></strong></p> <p>Total de registros retornados pela consulta:<strong><?php print $total_registros?></strong></p> <table cellspacing="0"> <thead> <tr> <td>Categoria</td> <td align="right">Média de preços</td> </tr> </thead> <?php while ($reg = mysql_fetch_array($rs)) { $id_categoria = $reg["id_categoria"]; $media_preco = $reg["media_preco"]; ?> <tr> <td><?php print $id_categoria; ?></td> <td align="right">R$<?php print number_format($media_preco, 2 , ',' , '.'); ?></td> </tr> <?php } ?> </table> </body> </html> <?php mysql_free_result($rs); mysql_close($conexao); ?>Eu gostaria de que em vez de mostrar somente o código da categoria, mostrasse o nome da categoria de livros. O nome da categoria esta na tabela "categorias"Tabela livros: -id_livros-nome-preço-etc......-id_categoria (relacionado com a tabela "categorias")Tabela categorias:-id_cat-nome_cat Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jow Postado Agosto 13, 2012 Denunciar Share Postado Agosto 13, 2012 $sql = "SELECT livros.id_categoria, AVG(livros.preço) AS media_preco, categorias.nome_cat"; $sql = $sql . " FROM livros INNER JOIN categorias ON(livros.id_categoria = categorias.id_cat) "; $sql = $sql . " GROUP BY livros.id_categoria"; //$sql = $sql . " ORDER BY media_preco";Só mandar mostrar o campo nome_cat Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Bruno Techera Postado Agosto 13, 2012 Autor Denunciar Share Postado Agosto 13, 2012 $sql = "SELECT livros.id_categoria, AVG(livros.preço) AS media_preco, categorias.nome_cat"; $sql = $sql . " FROM livros INNER JOIN categorias ON(livros.id_categoria = categorias.id_cat) "; $sql = $sql . " GROUP BY livros.id_categoria"; //$sql = $sql . " ORDER BY media_preco"; Só mandar mostrar o campo nome_cat Muito obrigado, deu certo! O código ficou assim: <!DOCTYPE html PUBLIC "-//W3C// DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Teste</title> </head> <?php include "dbconexao.php"; include "estilo1.css"; $sql="SELECT MAX(livros.preço) AS maior_preco, livros.codigo, livros.nome, livros.id_categoria, categorias.cat_nome"; $sql=$sql . " FROM livros"; $sql=$sql . " INNER JOIN categorias"; $sql=$sql . " ON (livros.id_categoria = categorias.id)"; $sql=$sql . " GROUP BY livros.id_categoria"; $sql=$sql . " ORDER BY maior_preco"; $rs=mysql_query($sql,$conexao); ?> <body> <p>Sentença SQL: <strong><?php print $sql; ?></strong></p> <table> <thead> <td>Código</td> <td>Nome</td> <td>Categoria</td> <td align="right">Preço</td> </thead> <?php while ($reg=mysql_fetch_array($rs)) { $codigo=$reg["codigo"]; $nome=$reg["nome"]; $cat_nome=$reg["cat_nome"]; $preço=$reg["maior_preco"]; ?> <tr> <td><?php print $codigo; ?></td> <td><?php print $nome; ?></td> <td><?php print $cat_nome; ?></td> <td align="right">R$ <?php print number_format($preço,2,',','.'); ?></td> </tr> <?php } ?> </table> </body> </html> Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Bruno Techera
Tenho uma tabela "Livros" e outra "Categorias" preciso realizar uma consulta SQL de modo que:
-Exibir os nomes e preços dos livros com o maior preço de cada categoria
Eu consegui fazer a tabela mostrando o id da categoria e seu maior preço, mas quando quero mostrar o nome da categoria e seu maior preço da erro.
Agradeço a ajuda.
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.