I have a SQL Server 2008 R2 database. This database has two tables called Pictures and PictureUse.
Picture table has the following columns:
Id (int)
PictureName (nvarchar(max))
CreateDate (datetime )
PictureUse table has the following columns :
Id (int)
Pictureid (int)
CreateDate (datetime )
I need to create a computed column in the Picture
table which tells me that how many times this picture has been clicked.any help ?
You can create a user-defined function for that:
CREATE FUNCTION dbo.CountUses(@pictureId INT)
RETURNS INT
AS
BEGIN
RETURN
(SELECT Count(id)
FROM PictureUse
WHERE PictureId = @PictureId)
END
The computed column can then be added like this:
ALTER TABLE dbo.Picture
ADD NofUses AS dbo.CountUses(Id)
However, I would rather make a view for this:
CREATE VIEW PictureView
AS
SELECT Picture.Id,
PictureName,
Picture.CreateDate,
Count(PictureUse.Id) NofUses
FROM Picture
JOIN PictureUse
ON Picture.Id = PictureUse.PictureId
GROUP BY Picture.Id,
PictureName,
Picture.CreateDate