gpt4 book ai didi

MySql 跨表关联子查询计数

转载 作者:行者123 更新时间:2023-11-29 03:45:16 25 4
gpt4 key购买 nike

我有 3 个与以下字段相关的表:

forums          topics          posts
f_id ---- f_id t_id ---- t_id p_id

对于给定的 f_id,我尝试在 1 个查询中进行 2 个不同的计数:

  1. t_id(主题)的总数
  2. p_id 的总数(帖子)

例如 f_id=78 应该简单地导致

tc  |  pc
---------
4 | 3

意思是有 4 个主题,总共有 3 个关于这些主题的帖子,都在那个论坛中。但是当我使用这个简单的查询时(经过数小时的尝试和研究我的最佳尝试):

SELECT (
SELECT COUNT( t_id )
FROM topics
WHERE f_id = '78'
) AS tc, (

SELECT COUNT( p_id )
FROM posts
WHERE posts.t_id = topics.t_id
) AS pc
FROM topics
WHERE topics.f_id = '78'

但这只会导致主题中与 f_id 匹配的每一行的计数,如下所示:

tc  |  pc
---------
4 | 0
4 | 1
4 | 2
4 | 0

而不是总数。我真的被困在这里,尽管我很确定这不是一件很难实现的事情。谢谢!


编辑:根据要求提供一些示例数据:

论坛

f_id  t_name      ...
---------------------
78 Test ...
33 Something ...

主题

f_id  t_id   t_date      ...
----------------------------
78 28 2011-07-14 ...
78 53 2011-07-14 ...
78 54 2011-07-14 ...
78 56 2011-07-14 ...
33 57 2011-07-14 ...

帖子

t_id  p_id  p_date      ...
---------------------------
54 2 2011-07-14 ...
54 4 2011-07-14 ...
53 5 2011-07-14 ...

最佳答案

将预先计算好的帖子和主题的值相应地直接存储在主题和论坛表中是很常见的,因为计数(可能有区别)不是一个廉价的操作。

创建后,您可以使用触发器或您的代码维护该计数器。

关于MySql 跨表关联子查询计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6701160/

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