Views, Triggers and Stored Procedures-1
Views, Triggers and Stored Procedures-1
---VIEWS
use Moviehub
--1.
CREATE VIEW Movies_actor_names as
Select M.MovieID, M.Title, A.Names
From Artists as A, Movie as M
Where M.LeadingID=A.ArtistID
--Drop Movies_actor_names
--2.
CREATE VIEW rate_review as
Select U.UserName, URW.ReviewText, UR.Rating
From Users as U, UserReview as URW, UserRating as UR
Where U.UserID=URW.UserID AND U.UserID=UR.UserID AND URW.MovieID=UR.MovieID
--3
CREATE VIEW RMBO as ---RecommendedMovieIDboxoffice
Select R.*, BO.*
From BoxOffice as BO, Recommendation as R
WHERE BO.MovieID=RecommendedMovieID
--4
CREATE VIEW ActorBO as ---ACTORS AND THEIR BOX OFFICES TOTAL REVENUE
Select A.Names, A.ArtistID, M.MovieID, BO.TotalRevenue
From Artists as A, BoxOffice as BO, Movie as M
Where M.LeadingID = A.ArtistID AND M.MovieID = BO.MovieID
--5
CREATE VIEW User_interaction as --this will have email and profile info of the
user who is leaving a comment. i.e the "content" column must have "comment" as a
value.
Select U.UserID, U.Email, U.ProfileInfo, SI.Content
From Users AS U, SocialInteraction as SI
Where SI.InteractionType = 'comment'
-----------------------------------------------------------------------------
--TRIGGERS:
--1
CREATE TRIGGER CheckFiveStarReviews
ON UserRating
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @MovieID INT;
DECLARE @FiveStarCount INT;
DECLARE @MovieTitle VARCHAR(50);
-------------------------------------
--2
CREATE TRIGGER MostActiveUserTrigger
ON UserReview
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
DECLARE @MostActiveUserID INT;
DECLARE @MostActiveUserName VARCHAR(20);
--3
CREATE TRIGGER DeleteMovieOnBadReviews
ON UserRating
AFTER INSERT
AS
BEGIN
DECLARE @MovieID INT;
DECLARE @OneStarCount INT;
-- Print a message indicating that the movie has been deleted (optional)
PRINT 'The movie with ID ' + CONVERT(VARCHAR(10), @MovieID) + ' has received
100,000 1-star reviews and has been deleted!';
END
END;
--------------------------
--4
CREATE TABLE MoviesLastMonth (
MovieID INT,
Title VARCHAR(100),
ReleaseDate DATE
);
-------------------------
--5
--STORED PROCEDURES:
--procedures
--------------------------------------------
--3 selects all movies with a opening week revenue over specified value(moni)
CREATE PROCEDURE SelectAllHitMovies @moni integer AS
BEGIN
Select M.Title, BO.OpeningWeekGross
From Movie as M, BoxOffice as BO
Where BO.OpeningWeekGross > @moni
END;
---------------------------------
--4 finds a specified users rating of a specified movieID
CREATE PROCEDURE SpecifiedUserRatingofMovie
@movieID INT,
@userID INT
AS
BEGIN
SELECT Rating
FROM UserRating
WHERE MovieID = @movieID AND UserID = @userID;
END;
---------------------------------
--5
CREATE PROCEDURE SelectallREVIEWSofamovie
@movieid INT
AS
BEGIN
SELECT M.Title, M.MovieID, URW.UserID, URW.ReviewID, URW.ReviewText
FROM Movie AS M
INNER JOIN UserReview AS URW ON M.MovieID = URW.MovieID
WHERE M.MovieID = @movieid;
END;
---end
--example executions
--1.
Exec SelectAllActor
--2
Exec SelectAllMovieswithActorX @ActorNames='mahr'
--3
Exec SelectAllHitMovies @moni=5000000
--4
Exec SpecifiedUserRatingofMovie @movieID=1234, @userID = 123
--5
EXEC SelectallREVIEWSofamovie @movieid=12345