Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
Bruno Techera

Problema Função MAX()

Question

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.

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

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

Share this post


Link to post
Share on other sites
  • 0

$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

Share this post


Link to post
Share on other sites
  • 0
$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>

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148496
    • Total Posts
      644186
×
×
  • Create New...