我需要创建一个包含两个表的视图: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,
哪个是正确的答案?
答案 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
中的列,而WHERE
在JOIN
列中。
因此,更好的写法是:
CREATE VIEW todolist AS
SELECT t.taskname, t.description
FROM tasks t
WHERE t.statusid = 1;
注意:这假设statusid
在status
中是唯一的,但这似乎是一个非常合理的假设。
如果您正在学习SQL,则应该学习如何正确简洁地编写查询。