簡體   English   中英

SQL 查詢錯誤:錯誤:ER_BAD_FIELD_ERROR:“有子句”中的未知列“Enrollment.final_grade”

[英]SQL Query Error: Error: ER_BAD_FIELD_ERROR: Unknown column 'Enrollment.final_grade' in 'having clause'

我正在尋找“對於教授同一門課程的每位教授,找到在截止日期之前輟學的學生人數(“W”級),但我一直收到關於我的 HAVING 子句的錯誤。有人能指出我的右邊嗎方向?甚至沒有表格正在形成。我假設在 HAVING 之前我還需要在其他地方進行 SELECT?請解釋我遺漏或搞砸了什么,謝謝!

CREATE TABLE Student (
  student_id INT(9) PRIMARY KEY, 
  name VARCHAR(100) NOT NULL, 
  gpa DECIMAL(3,2) DEFAULT 0.00
);

CREATE TABLE Course (
  course_id CHAR(8) PRIMARY KEY, 
  description VARCHAR(100) NOT NULL, 
  units INT DEFAULT 3
);

CREATE TABLE CourseSection (
  course CHAR(8) NOT NULL,
  section INT(1) DEFAULT 1,
  CONSTRAINT FK_SECTION_COURSE FOREIGN KEY (course) REFERENCES Course(course_id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE CoursePrerequisites ( 
  course CHAR(8) NOT NULL,
  prerequisite CHAR(8) NOT NULL, 
  CONSTRAINT FK_COURSEPREREQUISITES_COURSE FOREIGN KEY (course) REFERENCES Course(course_id) ON DELETE CASCADE ON UPDATE CASCADE, 
  CONSTRAINT FK_COURSEPREREQUISITES_PREREQUISITES FOREIGN KEY (prerequisite) REFERENCES Course(course_id) ON DELETE CASCADE ON UPDATE CASCADE
);


CREATE TABLE Faculty (
  faculty_id INT(9) PRIMARY KEY, 
  name VARCHAR(100) NOT NULL, 
  role ENUM ('professor','researcher','both')
);


CREATE TABLE Application (
  application_id INT PRIMARY KEY AUTO_INCREMENT, 
  student INT(9) NOT NULL, 
  program ENUM('Phd', 'Master', 'Undergrad'),
  department ENUM("CS", "MATH"),
  status ENUM("Admitted", "Rejected") DEFAULT "Rejected",
  CONSTRAINT FK_APPLICATION_STUDENT FOREIGN KEY (student) REFERENCES Student(student_id) ON DELETE CASCADE ON UPDATE CASCADE
  
);

CREATE TABLE Enrollment (
  enrollment_id INT PRIMARY KEY AUTO_INCREMENT,
  course CHAR(8) NOT NULL,
  student INT(9) NOT NULL,
  date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
  semester ENUM('FA', 'SP', 'SU'), 
  status ENUM('dropped', 'enrolled') DEFAULT "enrolled",
  final_grade ENUM('A', 'B', 'C', 'D', 'F', 'NC', 'IC', 'CR', 'W', 'WU', 'NA') DEFAULT 'A',
  CONSTRAINT FK_ENROLLMENT_COURSE FOREIGN KEY (course) REFERENCES Course(course_id) ON DELETE CASCADE ON UPDATE CASCADE, 
  CONSTRAINT FK_ENROLLMENT_STUDENT FOREIGN KEY (student) REFERENCES Student(student_id) ON DELETE CASCADE ON UPDATE CASCADE 
);
SELECT Course.course_id, Student.student_id, COUNT(Enrollment.final_grade) 
FROM Enrollment
JOIN Course ON Course.course_id = Enrollment.course
JOIN Student ON Student.student_id = Enrollment.student
GROUP BY Course.course_id
HAVING Enrollment.final_grade = 'W';

GROUP BY 需要 Student.student_id 字段。

SELECT Course.course_id, Student.student_id, COUNT(Enrollment.final_grade) 
FROM Enrollment
JOIN Course ON Course.course_id = Enrollment.course
JOIN Student ON Student.student_id = Enrollment.student
WHERE Enrollment.final_grade = 'W'
GROUP BY Course.course_id, Student.student_id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM