Создайте представление, объединяющее две таблицы ms sql server 2014 - PullRequest
0 голосов
/ 01 мая 2019

Мне нужно создать представление, объединяющее две таблицы: Задача и Состояние

То, что я сделал, было:

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 ]

1 голос
/ 01 мая 2019

Во-первых, я бы порекомендовал использовать псевдонимы таблиц, чтобы легче было писать и читать запрос:

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, вы должны научиться правильно и кратко писать запросы.

1 голос
/ 01 мая 2019

Что вам нужно, это:

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

Полный синтаксис описан здесь

...