创建一个组合两个表的视图 ms sql server 2014
Posted
技术标签:
【中文标题】创建一个组合两个表的视图 ms sql server 2014【英文标题】:Create a view combining two tables ms sql server 2014 【发布时间】:2019-05-01 06:52:00 【问题描述】:我需要创建一个结合两个表的视图:任务和状态
我所做的是:
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,
哪个是正确的答案?
【问题讨论】:
您在第一条语句中缺少视图的名称。 【参考方案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
【讨论】:
【参考方案2】:首先,我建议使用表别名,以便查询更易于编写和阅读:
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;
注意:这假设statusid
在status
中是唯一的,但这似乎是一个非常合理的假设。
如果您正在学习 SQL,那么您应该学习如何正确、简洁地编写查询。
【讨论】:
以上是关于创建一个组合两个表的视图 ms sql server 2014的主要内容,如果未能解决你的问题,请参考以下文章