返回json数据的存储过程

时间:2017-07-23 17:40:35

标签: sql sql-server json select stored-procedures

我对SQL和存储过程一般都很陌生,我需要帮助创建一个从数据库中获取数据的存储过程。

这是我的e-r图

enter image description here

我需要做的是为所有当前登录的客户购买所有租借的电影。

以下是示例:

客户

Id: 1
Name: Jack
Last name: Jackson

Id: 2
Name: John
Last name: Jankins

电影

Id: 1
Title: Logan
Serial num: 19946519

Id: 2
Title: Shutter island
Serial num: 23456519

Id: 3
Title: Pulp fiction
Serial num: 11934857

结果:

  • ID为1的客户的RentedMovies :( ID为1和2的电影)

RentedMovies

Id: 1
Name: John
Last name: Jankins
Title: Logan
Serial num: 19946519
Category: Action
Type: Limited release

Id: 2
Name: John
Last name: Jankins
Title: Shutter island
Serial num: 23456519
Category: Mystery
Type: Limited release

我不确定RentedMovies是否都应该具有1的Id,但我认为你可以了解我想要实现的目标。

这是我到目前为止所做的,但它不起作用。另外我不知道如何让它作为JSON返回。

SELECT 
    rm.id, c.name, c.lastName, m.title, m.serialNumber, cat.category, t.type
FROM 
    RentedMovies rm
INNER JOIN  
    Customer c ON c.id = rm.fk_Customer,
INNER JOIN  
    Movies m ON m.id = rm.fk_Movie
INNER JOIN  
    Category cat ON cat.id = mc.fk_Category
INNER JOIN  
    Type t ON t.Id = mt.fk_Type
WHERE 
    c.id = Id;

我真的很感谢你的帮助!

PS:这是一个ASP.NET MVC应用程序,结果应该基于用户当前登录的ID,后者从代码隐藏中传递。

1 个答案:

答案 0 :(得分:4)

这应该有效!

Create Proc RentedFilms (
@ID
) AS

 SELECT 
 CM.id
,CM.name
,CM.lastName
,MV.title
,MV.serialNumber
,CG.category
,TP.type
FROM RentedMovie RM
LEFT JOIN Customer CM on RM.fk_Customer=CM.id
LEFT JOIN Movie MV on  RM.fk_Movie=MV.id
RIGHT JOIN MovieCategory  MC on MC.fk_Movie=MV.id
LEFT JOIN Category CG on CG.id=MC.fk_Category
RIGHT JOIN MovieType MT on MT.fk_Movie=MV.id
LEFT JOIN Type TP on TP.id=MT.fk_Type
WHERE CM.id=@ID
FOR JSON AUTO