2014-07-25 45 views
0

我想從下面的表中創建一個視圖,它給出了classId,學期,教授它的教授的名字以及該學期提供的部分的數量。我試圖用SQL查詢創建視圖:從MySQL中的多個表創建視圖

CREATE SQL SECURITY INVOKER VIEW ClassesView AS SELECT Qualified.ClassId, Teaches.Semester, CONCAT(Professor.FName, Professor.LName) AS Name, Teaches.Section FROM Teaches, Professor, Qualified WHERE Qualified.EmpId = Professor.EmpId, Qualified.ClassId = Teaches.Class; 

但是,這沒有奏效。我將如何從下列表格中創建所需的視圖?

CREATE TABLE Class 
(
    ClassId VARCHAR(6), 
    Description VARCHAR(30), 
    NumCredits Integer, 
    Prereq VARCHAR(20), 
    PRIMARY KEY(ClassId) 
); 

CREATE TABLE Section 
(
    ClassId VARCHAR(6), 
    SecNo CHAR(10), 
    Semester CHAR(4), 
    ClassRoom VARCHAR(6), 
    TimeOffered VARCHAR(18), 
    PRIMARY KEY(SecNo), 
    FOREIGN KEY(ClassId) REFERENCES Class(ClassId) 
); 

CREATE TABLE Professor 
(
    EmpId INTEGER, 
    FName VARCHAR(10), 
    LName VARCHAR(10), 
    Dept VARCHAR(2), 
    QualClass VARCHAR(40), 
    PRIMARY KEY (EmpId) 
); 

CREATE TABLE Teaches 
(
    Class VARCHAR(5), 
    Section INTEGER, 
    Semester CHAR(4), 
    EmpId INTEGER, 
    FOREIGN KEY (EmpId) REFERENCES Professor(EmpId) 
); 

CREATE TABLE Qualified 
(
    EmpId INTEGER, 
    ClassId VARCHAR(5) 
); 

謝謝。任何幫助將非常感謝,因爲它會幫助我學習MySQL。

+0

不要使用上個世紀的隱式(逗號)聯接語法。用適當的,明確的JOIN語法加入21世紀吧! – Strawberry

回答

0

有一個語法錯誤(替換用和逗號)

CREATE SQL SECURITY INVOKER VIEW ClassesView AS 
SELECT Qualified.ClassId, Teaches.Semester, CONCAT(Professor.FName, Professor.LName) AS Name, Teaches.Section 
FROM Teaches, Professor, Qualified 
WHERE Qualified.EmpId = Professor.EmpId AND Qualified.ClassId = Teaches.Class; 
+0

謝謝。稍後我會試一試。 – user3780986