2010-08-06 2 views
1

До сих пор я могу перечислить все эссе студентов, но я хочу, чтобы иметь возможность отображать только градуированные студенческие эссе и интересно, как я смогу это сделать? Что еще мне нужно добавить в мой код MySQL?Задача запроса MySQL

Спасибо за помощь заранее!

Вот что я получил до сих пор с моим кодом MySQL.

SELECT students.*, students_essays.* 
FROM students 
INNER JOIN students_essays ON students.student_id = students_essays.student_id 
ORDER BY students_essays.id DESC 

Вот мои таблицы MySQL.

CREATE TABLE students_essays (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
student_id INT UNSIGNED NOT NULL, 
content TEXT NOT NULL, 
PRIMARY KEY (id) 
); 


CREATE TABLE students (
student_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
student_first_name VARCHAR(255) DEFAULT NULL, 
student_last_name VARCHAR(255) DEFAULT NULL, 
pass CHAR(40) NOT NULL, 
PRIMARY KEY (student_id) 
); 


CREATE TABLE essays_grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
grade_id INT UNSIGNED NOT NULL, 
students_essays_id INT UNSIGNED NOT NULL, 
student_id INT UNSIGNED NOT NULL, 
PRIMARY KEY (id) 
); 

CREATE TABLE grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
letter_grade VARCHAR(2) DEFAULT NULL, 
grade_points FLOAT UNSIGNED NOT NULL DEFAULT 0, 
PRIMARY KEY (id) 
); 

ответ

1

Просто внутреннее соединение к столу essays_grades (и таблицы классов, если вы хотите, класс).

SELECT students.*, students_essays.* 
FROM students 
INNER JOIN students_essays ON students.student_id = students_essays.student_id 
INNER JOIN essays_grades ON students_essays.id = essays_grades.students_essays_id 
ORDER BY students_essays.id DESC 

Вот несколько советов ... Вы можете псевдоним таблицы имен (предоставляя псевдоним после имени таблицы в ЕКЕ) и прекратить обращаясь к ним по их полным именам, и вы можете просто сказать JOIN и это подразумевается как внутреннее соединение.

SELECT st.*, es.* 
FROM students st 
JOIN students_essays es ON st.student_id = es.student_id 
JOIN essays_grades gr ON es.id = gr.students_essays_id 
ORDER BY es.id DESC 
0

Просто присоединитесь к таблице оценок в таблице эссе и проверьте наличие существующей записи.

SELECT students.*, students_essays.* 
FROM students 
INNER JOIN students_essays ON students.student_id = students_essays.student_id 
INNER JOIN essays_grades ON students_essays.id = essays_grades.students_essays_id 
ORDER BY students_essays.id DESC 
+0

ОП только хочет видеть градуированное эссе, так что это безопасно для меня, чтобы использовать INNER JOIN - ВЛЕВО РЕГИСТРИРУЙТЕСЬ/IS NULL покажут эссе без каких-либо оценок. –

+0

Хороший улов, спасибо. –

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