【发布时间】:2011-10-19 22:11:29
【问题描述】:
我在博客下面有三张表:一张用于用户,一张用于 cmets,一张用于线程。 并非所有检索到的记录都由 PHP 回显,我认为这可能与 NULL 值有关,例如在我的成员列表页面上,以下查询检索了四个用户的数据:
SELECT COUNT(Topics.MemberID) AS NumberOfTopics, Users.id,
Users.FirstName, Users.LastName, Users.Joined
FROM Users LEFT JOIN Topics ON Users.id=Topics.MemberID GROUP BY Topics.MemberID
但是,如果列表末尾的最后一个用户没有主题 (NumberOfTopics = 0),则不会显示它们。 如果用户的帖子计数为 0,但他们关注的记录的帖子计数不为 0,则显示该用户。为什么?
完整代码如下:
$result = mysql_query("SELECT COUNT(Topics.MemberID) AS NumberOfTopics, ".
"Users.id, Users.FirstName, Users.LastName, Users.Joined ".
"FROM Users LEFT JOIN Topics ON Users.id=Topics.MemberID ".
"GROUP BY Topics.MemberID")
or die("Query failed with error: ".mysql_error());
echo "<table border='1'>
<tr>
<th>Name</th>
<th>Joined</th>
<th>No. of posts</th>
</tr>";
while($row = mysql_fetch_assoc($result))
{
echo "<tr>";
echo "<td><a href='/neuro/profile.php?userid=$row[id]'>" .
$row['FirstName'] . " " . $row['LastName'] . "</a></td>";
echo "<td>" . $row['Joined'] . "</td>";
echo "<td>" . $row['NumberOfTopics'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
感谢阅读!
【问题讨论】:
-
也许您应该在
Users.id上分组,因为没有主题的用户将没有Topics.MemberID可以分组? -
您是否在 phpmyadmin 或类似工具中检查过您的 SQL?
-
Miles,如果您可以选择其中一个答案作为“已接受的答案”,我们将不胜感激。为此,请单击带有箭头的数字下方的复选标记。这让系统知道您已收到答案并对此感到满意。 :)
标签: php mysql database while-loop