带有COUNT,FROM,WHERE,GROUP BY的MYSQL SELECT

时间:2012-05-09 04:56:50

标签: php mysql select count group-by

我在向此查询添加where子句时遇到问题。我希望从“SAT AM / SUN PM”列中选择“是”以及“确认”列为“是”的位置进行选择。

这没有'WHERE shift_times ='SAT AM / SUN PM' - 它没有输出任何东西:

        $query = "SELECT position, COUNT(confirmed) FROM volConfirm WHERE shift_times='SAT AM/SUN PM' GROUP BY position"; 

    $result = mysql_query($query) or die(mysql_error());

    // Print out result
    while($row = mysql_fetch_array($result)){
        echo "There are ". $row['COUNT(confirmed)'] ." ". $row['position'] ." " . $row['shift_times'] . " volunteers.";
        echo "<br />";

更多信息: 该表包含以“是”或“0”(否)确认的记录,并且shift_times是SAT AM / SUN PM或SAT PM / SUN AM。有几个不同的立场。我试图显示最终结果,如so-ish:

“SAT AM / SUN PM”有“30”“艺术”志愿者

“SAT PM / SUN AM”有“30”“艺术”志愿者

理想情况下,行会旋转,因此下面的回波将是“SAT PM / SUN AM”的反向数据 - 但这看起来有点棘手......

1 个答案:

答案 0 :(得分:3)

我将您的select语句更改为按班次选择和分组,因此每个班次将按每个班次选择一行。 我在你的count()中添加了一个别名'cnt',并更新了php以在echo语句中使用cnt 在while循环结束时没有结束括号(可能是复制和粘贴问题)

$query = "SELECT COUNT(confirmed) as cnt
          , position
          , shift_times 
         FROM volConfirm 
         WHERE confirmed='yes'  
         GROUP BY shift_times, position
         order by shift_times, position"; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result))
{
    echo "There are ". $row['cnt'] ." ". $row['position'] ." " . $row['shift_times'] . " volunteers.";
    echo "<br />";
}