SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.04.2012 22:57:04

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Вывести значение, если в таблице ничего нету

Здравствуйте, я в mySQL новичек, помогите!!!
Есть таблица journal, в ней поля id_journal, mark, id_student, id_subject, id_semester, id_course. При просмотре оценок выбирается отделение, специальность,курс, группа, семестр, предмет. Как организовать вывод оценок??? Тоесть если оценки не выставленны по данному предметы за данный курс, данной группе - нужно вывести всем 0, но ведь в журнале записей никаких нету.
Помогите решить проблему!!!

Неактивен

 

#2 15.04.2012 23:07:57

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Re: Вывести значение, если в таблице ничего нету

пробовал запросом типа
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) запрос ни как не завязан!!!

Неактивен

 

#3 15.04.2012 23:10:00

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывести значение, если в таблице ничего нету

select ..., ifnull(mark,0) from `таблица со списком студентов` left join journal on.. where id_subject=x1 and id_semester=x2 and id_course=x3 ...  ;

Неактивен

 

#4 15.04.2012 23:12:48

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Re: Вывести значение, если в таблице ничего нету

а это не тоже самое что и мой запрос???

Неактивен

 

#5 15.04.2012 23:13:20

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывести значение, если в таблице ничего нету

поправил предыдущий ответ

Неактивен

 

#6 15.04.2012 23:23:44

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Re: Вывести значение, если в таблице ничего нету

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

результат в принципе тот-же что и был!!! Если оценок нету - то и ничего нету!!!

Неактивен

 

#7 15.04.2012 23:39:26

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Re: Вывести значение, если в таблице ничего нету

ну что??? никто мне не поможет???

Неактивен

 

#8 15.04.2012 23:39:28

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывести значение, если в таблице ничего нету

Если оценки нужны для одной группы, то нет смысла объединять groups и students, просто для students укажите явный id_group.
В противном случае делайте лучше явный join, указывая условие связи (students.id_group=groups.id_group) в части on.

Что такое х1 в b.id_subject =x1 ? Вместо х1 нужно указание id предмета.

Неактивен

 

#9 15.04.2012 23:45:16

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Re: Вывести значение, если в таблице ничего нету

Что такое х1 в b.id_subject =x1 ? Вместо х1 нужно указание id предмета. - это я понял!!!
в таблице students и есть id_group!!!
простите а с этого момента можно по подробнее???
В противном случае делайте лучше явный join, указывая условие связи (students.id_group=groups.id_group) в части on.

Неактивен

 

#10 16.04.2012 00:02:52

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Re: Вывести значение, если в таблице ничего нету

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)

Неактивен

 

#11 16.04.2012 00:17:36

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Re: Вывести значение, если в таблице ничего нету

оценки нужны не только для одной группы!!!

Неактивен

 

#12 16.04.2012 00:47:43

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывести значение, если в таблице ничего нету

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;

Неактивен

 

#13 16.04.2012 15:00:47

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Re: Вывести значение, если в таблице ничего нету

блин, не помогло!!! если оценки есть в журнале по предмету - все выводит, но если оценки нету - ничего и не выводит!!!
может гдето условие по id_subject должно быть???

Неактивен

 

#14 16.04.2012 15:06:07

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Вывести значение, если в таблице ничего нету

Ага, понял, вот так попробуйте:

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;

Неактивен

 

#15 16.04.2012 15:32:30

beelka
Участник
Зарегистрирован: 12.04.2012
Сообщений: 14

Re: Вывести значение, если в таблице ничего нету

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
чутка подправил!!!
еееххххуууу!!!
огромное спасибо!!! шикарно, СПАСИБО!!!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson