2017-07-23 112 views
0

我几乎不熟悉SQL和存储过程,我需要帮助创建一个从数据库获取数据的存储过程。返回json数据的存储过程

这里是我的ER图

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 

结果:

  • RentedMovies客户ID为1:(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是否都应该有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,它从代码隐藏传递。

+0

您正在使用哪个**版本的SQL Server? SQL Server ** 2016 **和更新版本有'FOR JSON'关键字将结果集直接转换为JSON(请参阅[MSDN docs on creating JSON responses](https://docs.microsoft.com/en-us/sql/relational-databases/json/format-query-results-as-json-with-for-json-sql-server)) –

+0

它确实是2016年@marc_s – fkr

回答

2

这应该工作!

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 [email protected] 
FOR JSON AUTO 
+0

令人印象深刻的第一个答案。我无法验证它正在工作,因为我对这个主题毫无头绪,但它看起来不错:)欢迎来到Stackoverflow! – geisterfurz007