我用三个MySQL表:加入查询不能
评论
commentid loginid submissionid comment datecommented
登录
loginid username password email actcode disabled activated created points
提交
submissionid loginid title url displayurl datesubmitted
在这三个表中,“登录ID “对应。
我想根据“submissionid”的数量拉前10名loginids。我想将它们显示在一个3列的HTML表格中,该表格显示了第一列中的“用户名”,第二列中的“submissionid”的数量以及第三列中的“commentid”的数量。
我尝试使用下面的查询,但它没有奏效。任何想法为什么不呢?
由于提前,
约翰
$sqlStr = "SELECT
l.username
,l.loginid
,c.commentid
,count(s.commentid) countComments
,c.comment
,c.datecommented
,s.submissionid
,count(s.submissionid) countSubmissions
,s.title
,s.url
,s.displayurl
,s.datesubmitted
FROM comment AS c
INNER JOIN login AS l ON c.loginid = l.loginid
INNER JOIN submission AS s ON c.loginid = s.loginid
GROUP BY c.loginid
ORDER BY countSubmissions DESC
LIMIT 10";
$result = mysql_query($sqlStr);
$arr = array();
echo "<table class=\"samplesrec1\">";
while ($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td class="sitename1"><a href="http://www...com/.../members/index.php?profile='.$row["username"].'">'.stripslashes($row["username"]).'</a></td>';
echo '</tr>';
echo '<td class="sitename1">'.stripslashes($row["countSubmissions"]).'</td>';
echo '</tr>';
echo '</tr>';
echo '<td class="sitename1">'.stripslashes($row["countComments"]).'</td>';
echo '</tr>';
}
echo "</table>";
谢谢...这似乎显示仅至少有一个submissionid代表登录ID。我怎么能显示没有submitidsids的loginids? – John 2010-05-31 14:38:16
正确,然后用左连接替换JOIN。 – nuqqsa 2010-05-31 14:44:57
请参阅更新后的查询,它还包含将NULL值转换为0. – nuqqsa 2010-05-31 14:52:09