gpt4 book ai didi

php - 计数、分组、内部连接、PHP、MySQL

转载 作者:行者123 更新时间:2023-11-29 02:02:59 24 4
gpt4 key购买 nike

我目前正在(尝试)开发一个论坛。现在我遇到了一个小障碍。我的数据库中有四个表; “类别”、“论坛”、“主题”和“回复”。它们都有一个 ID、一个父 ID 和一个名称。

我现在的问题是我应该如何存储和获取每个类别和论坛的主题和回复数量。一开始我想到了把每个分类和论坛里的所有话题和回复都保存下来,也把每个话题下的回复都保存下来。

但这是我宁愿避免看到的事情,因为我必须对每个回复进行 1 次插入和 3 次更新; 1 个类别,1 个论坛,1 个主题,最后是回复本身,一个插入。

所以我想是否有可能(如果有的话如何)使用 COUNT、GROUP BY 和 INNER JOIN 进行查询

沿线的东西

SELECT * 
FROM `categories`
JOIN (COUNT ( * )
FROM `topics`
GROUP BY `parent_id`
WHERE `parent_id` = `categories`.`id`) as `amount_of_topics`
JOIN (COUNT ( * )
FROM `topics`
GROUP BY `parent_id`
WHERE `parent_id` = `topics`.`id`) as `amount_of_replies`

只是我没有让它按照我想要的方式工作。

所以要获取特定论坛的所有回复并计算它们,连接回复和论坛得到的是回复的parent_id属于一个主题,而parent_id属于一个论坛。

最佳答案

我不确定我是否正确理解了你的问题,但如果你只是想要特定论坛的主题和回复数(前提是类别属于某个论坛,而不是相反),你可以使用查询沿着这条线:

SELECT  forums.ID as forum_id
, forums.name as forum_name
, Count(topics.ID) AS count_of_topics
, Count(replies.ID) AS count_of replies
FROM forums
LEFT JOIN categories ON forums.ID = categories.parent_id
LEFT JOIN topics ON categories.ID = topics.parent_id
LEFT JOIN replies ON topics.ID = replies.parent_id
GROUP BY forums.ID, forums.name, categories.ID, categories.name;

如果您要按类别查找主题和回复的数量,请使用:

SELECT  categories.ID as category_id
, categories.name as category_name
, Count(topics.ID) AS count_of_topics
, Count(replies.ID) AS count_of replies
FROM categories
LEFT JOIN topics ON categories.ID = topics.parent_id
LEFT JOIN replies ON topics.ID = replies.parent_id
GROUP BY forums.ID, forums.name, categories.ID, categories.name;

希望对您有所帮助,但如果这不是您想要实现的目标,请在您的问题中添加精确度。

关于php - 计数、分组、内部连接、PHP、MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613802/

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