SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 16.03.2011 13:31:11

abaddon
Участник
Зарегистрирован: 16.03.2011
Сообщений: 3

Помощь

Всем привет. Помогите пожалуйсто разобраться. Есть три таблицы
mod_user
----------
id|fullname
----------

mod_userp
----------
id|predmet
----------

mod_useri
--------------------------
id_user|id_predmet|ocenka
--------------------------

Необходимо вывести для определенного пользователя все список всех предметов, их там порядка 60-ти, и оценки только для конкретного пользователя там где их нет вывести 0.
Сделал запрос вида

SELECT moduser.id AS 'userid', mod_userp.predmet AS 'name', mod_useri.ocenka AS 'ocenka'
FROM mod_userp
LEFT JOIN mod_useri ON mod_userp.id = mod_useri.id_predmet
JOIN mod_user 
WHERE mod_user.d = 3
ORDER BY userid ASC

Выводит то правильно только вот оценки выводятся для не взависимости от отго какой пользователь указан а для всех(((

Помогите плиз а то уже всю голову сломал.

Неактивен

 

#2 17.03.2011 01:29:53

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помощь

Ну, во-первых, Вы не написали условие объединения для последней таблицы,
поэтому выбираются все записи. Во-вторых, в случае, когда Вы знаете id поль-
зователя, его таблицу можно не объединять, достаточно написать ограничение
mod_useri.id_user = 3 в WHERE.

Неактивен

 

#3 17.03.2011 11:45:00

abaddon
Участник
Зарегистрирован: 16.03.2011
Сообщений: 3

Re: Помощь

Условие в последнем объединении и не нужно, мне надо например для пользователя 2 вывести список всех предметов и соответствующих им оценок, а если оценок нет то на их месте должны стоять нули. Вот вроде этого
только сейчас оценки выводятся для всех одни и те же, а нода чтобы разные для каждого конкретного пользователя свои.
id_user  predmet                                 ocenka

3    Основы философии    NULL
3    Русский язык и культура речи     NULL
3    Иностранный язык    NULL
3    Физическая культура    NULL
3    Основы социологии и политологии    NULL
3    Основы экономики    NULL
3    Математика и информатика    NULL
3    Теория государства и права    NULL
3    Конституционное право    NULL
3    Административное право    NULL
3    Основы экологического  права    NULL
3    Семейное право    NULL
3    Гражданское  право    NULL
3    Гражданский процесс     NULL
3    Трудовое право     NULL
3    Этика и психология профессиональной деятельности    NULL
3    Документационное обеспечение управления     NULL
3    Страховое дело    NULL
3    Статистика    NULL
3    Экономика организации    NULL
3    Менеджмент    NULL
3    Информационные технологии в профессиональной деяте...    NULL
3    Безопасность жизнедеятельности    4
3    Право социального обеспечения    NULL
3    Психология социально-правовой деятельности    NULL
3    Организация работы органов и учреждений социальной...    NULL
3    Социальная психология    NULL
3    Бухгалтерский отчет и отчетность    NULL
3    Основы психологических знаний о личности инвалидов...    NULL
3    Правовые основы медико-социальной экспертизы    NULL

Неактивен

 

#4 17.03.2011 21:28:03

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

Re: Помощь

SELECT moduser.id AS 'userid', mod_userp.predmet AS 'name', mod_useri.ocenka AS 'ocenka'
FROM mod_userp
LEFT JOIN (select ... from mod_useri WHERE mod_user.d = 3) t ON mod_userp.id = t.id_predmet
ORDER BY userid ASC
 

Неактивен

 

#5 17.03.2011 22:44:58

abaddon
Участник
Зарегистрирован: 16.03.2011
Сообщений: 3

Re: Помощь

Вроде помогло Спасибо большое)

Неактивен

 

Board footer

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