简体   繁体   中英

MAX and COUNT sql query

I need to know how to use MAX() and COUNT() query to display the "fiser" table entries that contain the primary "codp" key that comes from the "products" table, depending on a previously selected period?

Table products : codp , denp ;

Table orders : codc , codp ;

Table returns : codr , datar, codc , codp

<?php 

if(isset($_POST['add'])){

    $sql = "SELECT p.denp, a.datar,MAX(p.codp) 
            FROM ( SELECT COUNT(p.codp) FROM products p ) products p
                INNER JOIN orders o ON p.codp=o.codp
                INNER JOIN returns r ON o.codc=r.codc 
            WHERE  r.datar>=STR_TO_DATE('".$_POST['d1']."','%Y-%m-%d') 
            AND r.datar<=STR_TO_DATE('".$_POST['d2']."','%Y-%m-%d')  ";

    $result = mysqli_query($conn, $sql);
    $queryResult = mysqli_num_rows($result);
    if($queryResult > 0 ){
        while ($row = mysqli_fetch_assoc($result)) { 
            echo "
                <table border=1 >
                <tr>
                    <td><p> ".$row['codp']." </p></td>
                    <td><p> ".$row['denp']." </p></td> 
                    <td><p> " .$row['codr']." </p></td>
                    <td><p> " .$row['datar']." </p></td>
                    <td><p> " .$row['codc']." </p></td>
                </tr> </table> ";
        }   

    } else { 
        echo " No results!" ;
    }
}
?>

You should use group by for codp and the join the related result eg:

$sql = "SELECT p.denp, r.datar,MAX(p.cnt_codp) 
    FROM ( 
          SELECT codp, COUNT(*)  as cnt_codp FROM products  
          group by codp
    ) products p
    INNER JOIN orders o ON p.codp=o.codp
    INNER JOIN returns r ON o.codc=r.codc 
  WHERE  r.datar>=STR_TO_DATE('".$_POST['d1']."','%Y-%m-%d') 
      AND r.datar<=STR_TO_DATE('".$_POST['d2']."','%Y-%m-%d')  
   GROUP BY p.denp, r.datar ";

and you should check for your db driver for param bindig instead of use of php var in sql (you are at risk for sql injection)

and you should also use a group by for not aggreated column or reeval the question if you need the values related to max result (the use of aggregation function without a proper group by columns for not aggreagated is depreacted in sql ai the most recent version of mysql is not allowed)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM