MySQL PHP-用于不同值输出的变量


MySQL PHP - variable for distinct value output

我使用下面的查询来计算"Period"列中具有不同值的记录的数量。Period列包含"Breakfast"、"Lunch"或"Dinner",公式的输出按月度列分组,然后为每个不同的值分组一行:

Ttl。反馈:早餐:XXX

Ttl。反馈:午餐:XXX

Ttl。反馈:晚餐:XXX

现在,我需要的是每个总数的一个变量(请参阅早餐、午餐和晚餐返回的$mydata['total')。当前变量只返回每个不同值的总数,不允许我具体处理单个时期的分数。

    <?
    $whereParts = array();
    if ($property) {
        $whereParts[] = "Holidex = '$property' ";
    } 
    $whereParts = array();
    if ($outlet) {
        $whereParts[] = "Outlet = '$outlet' ";
    } 
    if ($pickyear) {
        $whereParts[] = "YEAR(Date) = '$pickyear' ";
    } 
    $sql = ("select distinct period from FB_Feedback_Card_Data");
    //BUILD THE FINAL QUERY
    if (count($whereParts) > 0) {
        $sql .= " WHERE " . implode('AND ', $whereParts);
    } 
    //count($whereParts) > 0
    $result = $mysqli->query($sql) or die('<p>Query to get case Period data from FB_Feedback_Card_Data table failed:' . mysql_error() . '</p>');
    while ($row = mysqli_fetch_row($result)) 
    {
        $period = $row[0];
        //echo "$status <br>";
        $mydata = stats("period", "$period", "$property", "$outlet", "$pickyear",$mysqli);
    ?>
<tr>
    <td class="result_desc"><?echo "Ttl. Feedback : $period";?></td>
    <td class="result"><? echo $mydata['a']; ?></td>
    <td class="result"><? echo $mydata['b']; ?></td>
    <td class="result"><? echo $mydata['c']; ?></td>
    <td class="result"><? echo $mydata['d']; ?></td>
    <td class="result"><? echo $mydata['e']; ?></td>
    <td class="result"><? echo $mydata['f']; ?></td>
    <td class="result"><? echo $mydata['g']; ?></td>
    <td class="result"><? echo $mydata['h']; ?></td>
    <td class="result"><? echo $mydata['i']; ?></td>
    <td class="result"><? echo $mydata['j']; ?></td>
    <td class="result"><? echo $mydata['k']; ?></td>
    <td class="result"><? echo $mydata['l']; ?></td>
    <td class="result_ytd"><strong><? echo $mydata['total']; ?></strong></td>
</tr>
<?
// end total status stats
}
?>

您不需要使用DISTINCT,您需要GROUP BY,它会将所有具有相同值的条目放在同一条记录上,然后您只需要对每个条目进行计数:

SELECT period, count(period) as period_count FROM FB_Feedback_Card_Data WHERE ... GROUP BY period

您可以使用php函数array_sum。通过此函数,您可以从$mydata变量中获得总和。

<td class="result_ytd"><strong><?= array_sum($mydata); ?></strong></td>

唯一的问题是,数组中不能有任何其他值,但我认为这里就是这样。