创建一个组合两个表的视图ms sql server 2014

问题描述 投票:0回答:2

我需要创建一个结合两个表的视图:任务和状态

我做的是:

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,

哪个是正确的答案?

sql sql-server sql-server-2014
2个回答
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
投票

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

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中的列,WHERE列中的JOIN列。

所以,更好的方法是:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.