这是我第一次来Stack。我正在尝试使用PHP
和MySQL
构建留言板(论坛)。我想在PHP
中显示一个表格,其中包含以下信息:
这是我的查询返回正确的最新线程,但不是正确的计数:
SELECT
forums.*,
threads.thread_id,
threads.thread_topic,
threads.user_id,
users.user_name,
threads.thread_date,
COUNT(DISTINCT threads.thread_id) AS thread_count,
COUNT(DISTINCT posts.post_id) AS post_count
FROM forums
LEFT OUTER JOIN threads
ON forums.forum_id = threads.forum_id
AND threads.thread_date =
(SELECT MAX(threads.thread_date) AS last_topic
FROM threads
WHERE forums.forum_id = threads.forum_id)
LEFT JOIN users
ON users.user_id = threads.user_id
LEFT JOIN posts
ON threads.thread_id = posts.thread_id
GROUP BY forums.forum_id
这些是帖子和帖子计数的结果,它只计算每个论坛最新帖子中的主题和帖子:
post count thread count
- -
7 1
1 1
1 1
1 1
0 0
此查询为每个论坛获取正确的帖子和帖子计数:
SELECT
COUNT(DISTINCT posts.post_id) AS post_count,
COUNT(DISTINCT threads.thread_id) AS thread_count
FROM forums
LEFT OUTER JOIN threads
ON threads.forum_id = forums.forum_id
LEFT JOIN posts
ON threads.thread_id = posts.thread_id
GROUP BY forums.forum_id;
每个论坛的帖子和帖子数量的结果应为:
post count thread count
- -
7 1
1 1
3 2
1 1
0 0
无论如何,我可以将两个查询组合起来,或者修复第一个查询,这样我得到了正确的输出吗?
请在您的建议中使用以下表格:
users, threads, forums, posts
我是PHP
和MySQL
的新手,所以如果不是这样做的话,我很抱歉。
非常感谢您的帮助!
答案 0 :(得分:0)
while($array = mysql_fetch_array($query)){
echo '<option value ='."$array[fname]".'>'.$array[fname].$array[lname].'</opton>';
}