gpt4 book ai didi

php - 计算用户帖子

转载 作者:行者123 更新时间:2023-11-29 00:13:52 25 4
gpt4 key购买 nike

我在用户页面上列出标签/类别。我想显示用户为每个标签发布的帖子数。标签、帖子和帖子标签位于不同的表中。困难在于,有两种帖子。帖子和评论。它们在同一张表中,但类型不同。 “问题和答案”。答案中的 related_id 是相关帖子的 ID。

我尝试了很多方法来解决,但无法让它发挥作用。

我的数据库结构:对于标签:

tagid      tag_name

对于帖子

id         type(enum:"question","answer")      related_id      user_id

对于后置标签:

post_id    tag_id

我尝试的代码如下:

$user_active_query = mysql_query("select    p.id,
p.user_id,
pt.post_id,
count(pt.post_id),
pt.tag_id,
t.tagid,
t.tag_name
from posts p
inner join post_tags pt
inner join tags t
on p.id = pt.post_id
and pt.tag_id = t.tagid
where p.user_id = '$uid'
group by t.tagid");
while($useractive = mysql_fetch_array($user_active_query)) {
$user_active_counter = $useractive['count(pt.post_id)'];
echo "<a href='' class='btn btn-mini' style='margin:3px;'>".$useractive['tag_name']." (".$user_active_counter.")</a>";
}

用户 ID 在页面上给出。 “$uid”。我只是厌倦了很多尝试并要求更正。一开始它似乎是存储后置标签的最佳方式,但现在这是一场噩梦。我的意思是,对我来说,使用这种结构似乎不可能做到这一点。

最佳答案

您可以获得两个计数,即用户发布的答案数和问题数,这里的技巧还可以使用正确的连接语法,您缺少连接的 on 子句

SELECT 
p.id,
p.user_id,
pt.post_id,
COUNT(pt.post_id) all_posts,
COALESCE(SUM(`type` = 'question')) questions,
COALESCE(SUM(`type` = 'answer')) answers,
pt.tag_id,
t.tagid,
t.tag_name
FROM tags t
LEFT JOIN post_tags pt ON(pt.tag_id = t.tagid)
LEFT JOIN posts p ON p.id = pt.post_id
WHERE p.user_id = '$uid'
GROUP BY t.tagid

注意在 mysql 中用一些表达式求和会得到一个 bool 值

Edit from comments 在您的上次加入中使用 OR 添加另一个条件,因此第一个条件将加入与标签关联的帖子,并且由于您的解释标签未直接与答案链接,但答案是链接的他们的问题与相关的 id 所以可以将每个答案的相关 id 加入标签 id 这样这样也可以获得答案的标签

SELECT 
p.id,
p.user_id,
pt.post_id,
COUNT(pt.post_id) all_posts,
COALESCE(SUM(`type` = 'question')) questions,
COALESCE(SUM(`type` = 'answer')) answers,
pt.tag_id,
t.tagid,
t.tag_name
FROM tags t
LEFT JOIN post_tags pt ON(pt.tag_id = t.tagid)
LEFT JOIN posts p ON (p.id = pt.post_id OR p.related_id = pt.post_id)
WHERE p.user_id = '$uid'
GROUP BY t.tagid

关于php - 计算用户帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23664538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com