Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте, я в mySQL новичек, помогите!!!
Есть таблица journal, в ней поля id_journal, mark, id_student, id_subject, id_semester, id_course. При просмотре оценок выбирается отделение, специальность,курс, группа, семестр, предмет. Как организовать вывод оценок??? Тоесть если оценки не выставленны по данному предметы за данный курс, данной группе - нужно вывести всем 0, но ведь в журнале записей никаких нету.
Помогите решить проблему!!!
Неактивен
пробовал запросом типа
SELECT students.id_student, groups.name_group, students.lastName, students.firstName, IF (b.mark IS NULL, 0, b.mark) AS mark FROM groups, students LEFT JOIN journal AS b ON (students.id_student = b.id_student) WHERE students.id_group=groups.id_group
но на предет(таблица subjects) запрос ни как не завязан!!!
Неактивен
select ..., ifnull(mark,0) from `таблица со списком студентов` left join journal on.. where id_subject=x1 and id_semester=x2 and id_course=x3 ... ;
Неактивен
а это не тоже самое что и мой запрос???
Неактивен
поправил предыдущий ответ
Неактивен
SELECT students.id_student, groups.name_group, students.lastName, students.firstName, ifnull(mark,0) FROM groups, students LEFT JOIN journal AS b ON (students.id_student = b.id_student) WHERE students.id_group=groups.id_group AND b.id_subject =x1
результат в принципе тот-же что и был!!! Если оценок нету - то и ничего нету!!!
Неактивен
ну что??? никто мне не поможет???
Неактивен
Если оценки нужны для одной группы, то нет смысла объединять groups и students, просто для students укажите явный id_group.
В противном случае делайте лучше явный join, указывая условие связи (students.id_group=groups.id_group) в части on.
Что такое х1 в b.id_subject =x1 ? Вместо х1 нужно указание id предмета.
Неактивен
Что такое х1 в b.id_subject =x1 ? Вместо х1 нужно указание id предмета. - это я понял!!!
в таблице students и есть id_group!!!
простите а с этого момента можно по подробнее???
В противном случае делайте лучше явный join, указывая условие связи (students.id_group=groups.id_group) в части on.
Неактивен
SELECT students.id_student, groups.name_group, students.lastName, students.firstName, ifnull(b.mark,0) FROM students LEFT JOIN (journal AS b, groups) ON (students.id_student = b.id_student and students.id_group = groups.id_group) WHERE b.id_subject = " + id_subj;
как я понял такой запрос должен быть??? почему-то все равно нет!!!
Простите что отвлекаю, просто реально нужна помощь!!!
Отредактированно beelka (16.04.2012 00:08:51)
Неактивен
оценки нужны не только для одной группы!!!
Неактивен
SELECT students.id_student, groups.name_group, students.lastName, students.firstName, ifnull(b.mark,0) FROM
students join groups on students.id_group = groups.id_group LEFT JOIN journal AS b ON students.id_student = b.id_student WHERE b.id_subject = " + id_subj;
Неактивен
блин, не помогло!!! если оценки есть в журнале по предмету - все выводит, но если оценки нету - ничего и не выводит!!!
может гдето условие по id_subject должно быть???
Неактивен
Ага, понял, вот так попробуйте:
SELECT students.id_student, groups.name_group, students.lastName, students.firstName, ifnull(b.mark,0) FROM
students join groups on students.id_group = groups.id_group LEFT JOIN (select mark journal WHERE id_subject = " + id_subj) AS b ON students.id_student = b.id_student;
Неактивен
SELECT students.id_student, groups.name_group, students.lastName, students.firstName, ifnull(b.mark,0) FROM students join groups on students.id_group = groups.id_group LEFT JOIN (select mark, id_student FROM journal WHERE id_subject = " + id_subj + ") AS b ON students.id_student = b.id_student
чутка подправил!!!
еееххххуууу!!!
огромное спасибо!!! шикарно, СПАСИБО!!!
Неактивен