在sql中创建2+视图

在sql中创建2+视图,sql,oracle,view,Sql,Oracle,View,我试图解决这个问题 下面的代码跳转出错 CREATE VIEW T AS ( SELECT STUDENTS.ID ,STUDENTS.NAME,PACKAGES.SALARY,FRIENDS.FRIEND_ID FROM STUDENTS JOIN FRIENDS ON STUDENTS.ID=FRIENDS.ID JOIN PACKAGES ON STUDENTS.ID=PACKAGES.ID ); CREATE VIEW T2 AS ( SELECT T.NAME FROM T

我试图解决这个问题 下面的代码跳转出错

CREATE VIEW T AS (
SELECT STUDENTS.ID ,STUDENTS.NAME,PACKAGES.SALARY,FRIENDS.FRIEND_ID
FROM STUDENTS JOIN FRIENDS ON STUDENTS.ID=FRIENDS.ID
    JOIN PACKAGES ON STUDENTS.ID=PACKAGES.ID
);
CREATE VIEW T2 AS (
SELECT T.NAME
FROM  T JOIN PACKAGES ON T.FRIEND_ID=PACKAGES.ID
WHERE T.SALARY<PACKAGES.SALARY
ORDER BY PACKAGES.SALARY;
);
SELECT *
FROM T2;
但是这个

CREATE VIEW T AS (
SELECT STUDENTS.ID ,STUDENTS.NAME,PACKAGES.SALARY,FRIENDS.FRIEND_ID
FROM STUDENTS JOIN FRIENDS ON STUDENTS.ID=FRIENDS.ID
    JOIN PACKAGES ON STUDENTS.ID=PACKAGES.ID
);

SELECT T.NAME
FROM  T JOIN PACKAGES ON T.FRIEND_ID=PACKAGES.ID
WHERE T.SALARY<PACKAGES.SALARY
ORDER BY PACKAGES.SALARY;
工作。
为什么呢?这是由于我创建了多个视图还是其他原因造成的?

尝试删除括号:

CREATE VIEW T AS 
    SELECT S.ID, S.NAME, P.SALARY, F.FRIEND_ID
    FROM STUDENTS S JOIN
        FRIENDS F
        ON S.ID = F.ID JOIN
        PACKAGES P
        ON S.ID = P.ID;

CREATE VIEW T2 AS
    SELECT T.NAME
    FROM T JOIN 
         PACKAGES P
         ON T.FRIEND_ID = P.ID
    WHERE T.SALARY < P.SALARY
    ORDER BY P.SALARY;
您会注意到,我引入了表别名,因此查询更易于编写和读取


括号不是创建视图语法的一部分,因此查询被解释为子查询。我认为这会使对订单的解释变得混乱。

。。您得到的错误是什么?好的,我切换到“创建视图T作为选择STUDENTS.ID,STUDENTS.NAME,PACKAGES.SALARY,FRIENDS.FRIENDS\u ID从学生加入学生上的朋友。ID=FRIENDS.ID加入学生上的包。ID=PACKAGES.ID;创建视图T2作为选择T.NAME,PACKAGES.SALARY作为FS,从T.FRIEND\u ID=PACKAGES.ID上的T JOIN PACKAGES中选择T.NAME,PACKAGES.SALARY作为FS,其中T.SALARY