mysql - 从 MySQL 中的多个表创建 View

标签 mysql sql database create-view

我正在尝试从下表创建一个 View ,其中给出了类(class) ID、学期、教授该类(class)的教授姓名以及该学期提供的部分数量。我尝试使用 SQL 查询创建 View :

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;

但这没有用。我将如何根据下表创建所需的 View ?

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。

最佳答案

存在语法错误(将逗号替换为 AND)

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;

关于mysql - 从 MySQL 中的多个表创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24959974/

相关文章:

python - 使用 Python 连接到 PostgreSQL

mysql 创建表不起作用

php - 基于列值打印值 - MYSQL、PHP

mysql - 查询执行时间太长

php - 结合 3 个不同的 MySQL 表的值,连接表 1 和表 2 并检查此连接中是否存在表 3 值

java - 使用 jsonb 列在 postgresql 中选择查询在 jpa 中不起作用

sql - 使用 XML PATH 时的额外字符

php - 尝试为现有表创建列时出现错误用户已存在

php - 每24小时显示不同的数据库记录

sql-server - 需要好的方案/工作流程来使用 Subversion 管理数据库对象