使用GROUP BY的mysql查询不能获取所有行

时间:2014-06-08 18:59:46

标签: php mysql

我有两张桌子:

奖项:

awardsid,
forumid

论坛:

forumid,
title

当我进行查询以获得所有论坛的论坛数量时,查询不会返回所有行。如果数据库包含4行,则只返回3.结果总是比预期的行少1行。

$forumdata = $db->query_read(" SELECT COUNT(awards.forumid) AS awardscount,forum.title,awards.forumid
FROM " . TABLE_PREFIX . " awards AS awards
 INNER JOIN " . TABLE_PREFIX . " forum AS forum ON (forum.forumid = awards.forumid)
 GROUP BY awards.forumid ");
       if($db->fetch_array($forumdata))
       {

                while ($awards = $db->fetch_array($forumdata))
                {
                $title .= $awards['title'];
                $awardscount .= $awards['awardscount'];
                echo $title.':'.$awardscount.'<br />';
                }
       }
       else
       {
        echo "No Data";
       }

2 个答案:

答案 0 :(得分:0)

改变你的:

 while ($awards = $db->fetch_array($forumdata))
                {
                $title .= $awards['title'];
                $awardscount .= $awards['awardscount'];
                echo $title.':'.$awardscount.'<br />';
                }

do
                {
                $title .= $awards['title'];
                $awardscount .= $awards['awardscount'];
                echo $title.':'.$awardscount.'<br />';
                }
while ($awards = $db->fetch_array($forumdata));

在处理

之前,您正在阅读它两次

答案 1 :(得分:0)

您在if子句中获取第一行,因此在echo从2到n的行中echo isset($title) ? '' : 'No data'; 。我不知道你是如何实现你的类来访问mysql的,所以你可以使用这样的东西:

while

if/else循环之后,您当然应该按照现在呈现的方式删除{{1}}条款。