1

有没有办法让一列等于另一个表中所有行的计数,其中 id = 当前行中的一列?

例如。

  • table1 有以下列:id,count
  • table2 有列 id, table1_id

我希望 table1.count 自动填充 table2 中的行数,其中table2.table1_id = table1.id

(它的父子有一个关系)。

显然我可以用 php 做到这一点,我只是认为这比每次页面加载时都必须不断地使用 php 重新计算要快。谢谢。

4

4 回答 4

1

您可以使用view来完成此操作。不过,它可能每次都会重新计算数字。

要在每次更改其他表时更新常规表,请使用触发器

如果表很少更改,不要太担心重新计算,因为结果通常会在查询缓存中。

于 2012-07-09T20:03:59.853 回答
0

假设table1.id是唯一键,您可以执行以下操作:

REPLACE INTO table1 (id, count)
SELECT table1_id, COUNT(*)
FROM table2
GROUP BY table1_id
于 2012-07-09T20:04:42.983 回答
0

使用 view 和 table table1_data,您可以这样做:

CREATE VIEW table1 AS
SELECT table1_data.*, COUNT(*) AS count
FROM table1_data, table2
WHERE table1_data.id = table2.table1_id
GROUP BY table1_data.id

这将从 中获取所有数据table1_data,按照您的描述添加一列count,并将结果显示为在大多数情况下可以像表格一样使用的视图。

于 2012-07-09T20:10:55.397 回答
0

当然,如果您的数据库引擎支持触发器,您可以使用触发器来实现这种“自动”效果。您需要在 table_data 上建立 2 个触发器,onInsert() 和 onDelete()。

于 2012-07-09T20:25:39.810 回答