从多个表mysql中选择

时间:2016-03-14 15:12:14

标签: mysql sql select where

我有一个包含表格学生,科目和参赛作品的考试数据库。 我正在尝试使用OCR考试委员会制作所有参赛作品的列表,显示有学生参加考试的参赛作品,学科名称和参赛作品的名单。我知道我需要包含WHERE命令,但也知道我做错了......

这是我的代码:

SELECT first_name, last_name, subject_name, level_of_entry
  FROM students, subjects
 WHERE exam_board = 'OCR';

2 个答案:

答案 0 :(得分:3)

首先,在连接表时,您需要指定什么关系。

其次,避免使用隐式连接语法(以逗号分隔)并使用正确的连接语法。

第三,这篇文章与https://stackoverflow.com/questions/35991271/how-do-i-create-a-script-to-show-all-people-taking-the-ocr-exam-mysql不一样吗?为什么有两个帖子。

无论如何,您需要将这三个表连接在一起:

SELECT students.first_name,students.last_name,subjects.subject_name,subjects.level_of_entry
FROM students
INNER JOIN entries
 ON(students.student_id = entries.student_id)
INNER JOIN subjects
 ON(entries.subject_id = subjects.subject_id)
WHERE subjects.exam_board='OCR';

另外,正如@JoachimIsaksson所提到的,你插入学生表是不正确的,将`更改为' ,最后将列与字符串进行比较时使用''比如我的where子句。

答案 1 :(得分:2)

替换

SELECT first_name,last_name,subject_name,level_of_entry
FROM students,subjects
WHERE exam_board=OCR;

SELECT first_name,last_name,subject_name,level_of_entry
FROM students join entries on
  students.student_id = entries.student_id
              join subjects on
    entries.subject_id =  subjects.subject_id
WHERE exam_board='OCR';