我需要创建一个结合两个表的视图:任务和状态
我做的是:
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,
哪个是正确的答案?
你需要的是:
CREATE VIEW todolist
AS
SELECT tasks.taskname, tasks.description
FROM status
INNER JOIN tasks
ON status.statusid = tasks.statusid
WHERE ( status.statusid = 1)
here描述了完整的语法
首先,我建议使用表别名,以便查询更容易编写和阅读:
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,那么您应该学习如何正确而简洁地编写查询。