创建合并两个表的视图MS SQL Server 2014

时间:2019-05-01 06:52:01

标签: sql sql-server sql-server-2014

我需要创建一个包含两个表的视图:Task和Status

我所做的是:

CREATE VIEW todolist
select     tasks.taskname, 
           tasks.description 
FROM  status 
INNER JOIN tasks 
ON  status.statusid = tasks.statusid 
WHERE ( status.statusid = 1)

但是他们告诉我上面的例子是错误的 正确的答案是:

CREATE todolist AS VIEW SELECT tasks.taskname, 
           tasks.description 
FROM  status 
INNER JOIN tasks 
ON  status.statusid = tasks.statusid 
WHERE ( status.statusid = 1)

自从上一个示例创建视图的语法错误以来,这没有任何意义,我的意思是第一行:

CREATE todolist AS VIEW SELECT tasks.taskname,

哪个是正确的答案?

2 个答案:

答案 0 :(得分:1)

您需要的是:

CREATE VIEW todolist 
AS 
SELECT tasks.taskname, tasks.description 
FROM  status 
INNER JOIN tasks 
ON  status.statusid = tasks.statusid 
WHERE ( status.statusid = 1)

完整语法描述为here

答案 1 :(得分:1)

首先,我建议使用表别名,以便查询更易于编写和阅读:

CREATE VIEW todolist AS
    SELECT t.taskname, t.description 
    FROM status s INNER JOIN
         tasks t
         ON s.statusid = t.statusid 
    WHERE s.statusid = 1;

(您的版本缺少AS。)更重要的是,不需要JOIN。您仅使用tasks中的列,而WHEREJOIN列中。

因此,更好的写法是:

CREATE VIEW todolist AS
    SELECT t.taskname, t.description 
    FROM tasks t
    WHERE t.statusid = 1;

注意:这假设statusidstatus中是唯一的,但这似乎是一个非常合理的假设。

如果您正在学习SQL,则应该学习如何正确简洁地编写查询。