如果这个问题有点模糊,请让我知道,我会提供更多信息。mysql从多个表中选择查询返回重复结果
我已经写了一个查询,从多个表中获取数据,但它不工作,我也很期待它,我完全难住了。
这里是我的代码:
SELECT students.student_fname, students.student_lname
FROM students, enrolments
WHERE enrolments.courseID = 'C001';
但这只是返回所有的学生姓和名的学生表,这些名字出现了两次。
下面是两个表的代码:
CREATE TABLE students
(
studentID CHAR(10) NOT NULL,
student_fname VARCHAR(15) NOT NULL,
student_lname VARCHAR(15) NOT NULL,
DOB VARCHAR(10) NOT NULL,
CONSTRAINT pk_students PRIMARY KEY (studentID)
);
CREATE TABLE enrolments
(
enrolmentNo int NOT NULL AUTO_INCREMENT,
studentID CHAR(10) NOT NULL,
courseID CHAR(4) NOT NULL,
CONSTRAINT pk_enrolments PRIMARY KEY (enrolmentno),
FOREIGN KEY (studentID) REFERENCES students (studentID),
FOREIGN KEY (courseID) REFERENCES courses (courseID)
)ENGINE = INNODB;
这将有助于了解这两个表以及它们是如何的表结构‘相关’来更好地支持你的问题,这样想一下,系统有一个关于所有学生和所有入学的列表,它假设所有入学都是针对每个学生的,因为你没有告诉系统它们是如何关联的。 – xQbert 2013-04-09 01:27:14
在问题 – Michael 2013-04-09 01:53:12
中加入了这些根据表格设计,我没有看到有关StudentID,enrolmentNo和courseID的唯一索引,因为这样的学生可以多次注册同一个课程,因此可以使用不同的/分组。一年/学期如果有人通过/失败并重新获得...在不同的学期和inf ormation是谨慎的... – xQbert 2013-04-09 02:02:45