2016-03-14 2 views
1

У меня есть база данных для экзаменов со столами студентов, предметов и записей. Я пытаюсь составить список всех записей с помощью экзаменационной комиссии OCR, в которой указаны имена студентов с записями, именами тем и уровнем входа для экзаменов, в которые учатся студенты. Я знаю, что нужно включать WHERE команды, но также знаю, что я сделал это неправильно ...Выберите из нескольких таблиц mysql

Вот мой код:

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

Вы пропустили немного. – Strawberry

+0

Nope. До сих пор отсутствует. Это репрезентативный набор данных и соответствующий желаемый результат. – Strawberry

+1

Кажется, что вставка в учеников была вставлена ​​через офис MS или аналогичный. Кавычки ... ну, не так. –

ответ

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.

+0

@ user5962847 Sry typo, записанная тема вместо предметов. Попробуйте сейчас – sagi

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'; 
+2

Немного не нужно с LEFT JOIN, когда вы ссылаетесь на самую правую таблицу в предложении WHERE, что делает ее внутренним соединением. –

Смежные вопросы