![](/img/trans.png)
[英]for each value of one table get and display count number of coresponding values from another table
[英]Update count ID values in one table and display in column of another
UPDATE CD
SET cdNumOfTracks = (
SELECT COUNT(cdID)
FROM Track
WHERE Track.cdID = CD.cdID
GROUP BY cdID
);
上面的查询用于计算表“ Track”中的“ cdID”,并使其在“ CD”表中显示为“ cdNumOfTracks”列。 “ cdID”是“ Track”表中的外键,来自“ CD”表。 该查询工作正常,但我必须手动运行此命令才能更新数据。
我将此数据库用作网站的一部分,该网站通过PHP / HTML表单获取数据,因此,我需要SQL后端自动更新。
为了使它正常工作,我需要能够添加一个轨道,并为其指定一个“ cdID”,然后在添加新轨道的同时向“ cdNumOfTracks”列中添加1
您问题的答案是使用触发器。 您至少需要一个触发器来进行插入和删除操作,并可能需要进行更新。 除非您的数据库很大,否则我建议您直接从CD
获得计数。
我确实要注意一些事情。 由于group by
,如果没有匹配项,查询将返回NULL
而不是0
。 通常,相关子查询不使用group by
:
UPDATE CD
SET cdNumOfTracks = (SELECT COUNT(cdID)
FROM Track
WHERE Track.cdID = CD.cdID
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.