UPDATE CD
SET cdNumOfTracks = (
SELECT COUNT(cdID)
FROM Track
WHERE Track.cdID = CD.cdID
GROUP BY cdID
);
上面的查询我用来计算' cdID'来自一张桌子" Track"并将它显示在" CD"表格列为“cdNumOfTracks'”。 ' CDID'是" Track"中的外键。表来自" CD"表。查询工作正常,但我必须手动运行以更新数据。
我使用此数据库作为通过PHP / HTML表单获取数据的网站的一部分,因此我需要SQL后端自动更新。
为了使其正常工作,我需要能够添加一个曲目,并为其提供一个“cdID”。然后,这将在“cdNumOfTracks”中添加1。列添加为新曲目
答案 0 :(得分:1)
您的问题的答案是使用触发器。您需要触发(至少)插入和删除,并可能需要更新。除非您有一个非常大的数据库,否则我建议您直接从group by
获取计数。
我确实想要注意一些事情。由于NULL
,如果没有匹配项,您的查询将返回0
而不是group by
。通常,相关子查询不使用UPDATE CD
SET cdNumOfTracks = (SELECT COUNT(cdID)
FROM Track
WHERE Track.cdID = CD.cdID
);
:
SmtpClient SmtpServer = new SmtpClient("smtp.live.com");
var mail = new MailMessage();
mail.From = new MailAddress("crazy_akin399999@hotmail.com");
mail.To.Add("akin.********@gmail.com");
mail.Subject = "Your Sub";
mail.IsBodyHtml = true;
string htmlBody;
htmlBody = "HTML code";
mail.Body = htmlBody;
SmtpServer.Port = 587;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("****abdull*h**lu@gmail.com", "*****");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);