powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с join и max
5 сообщений из 5, страница 1 из 1
Помогите с join и max
    #39241670
klafen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, имеется таблицы: Лабораторные работы (labs: id, shortcaption, active (boolean)) и результаты попыток выполнения этих лабораторных работ пользователями (lab_users: id, labid, userid, result). Поле result - числовое (оценка от 1 до 10).

Нужно получить список активных лабораторных работ с максимальным результатом по данной лабораторной работе какого-то определенного пользователя.
Делаю вот так:

Код: plsql
1.
2.
3.
4.
5.
6.
 
SELECT labs.id, labs.shortcaption, max(lab_users.result) AS result 
FROM labs LEFT JOIN user_labs ON labs .id = user_labs.labid 
WHERE labs.active = 1 AND (lab_users.userid=10 OR lab_users.userid IS NULL)
GROUP BY labs.id, labs.shortcaption 
ORDER BY labs.id ASC



Проблема в том, что если, например, для лабораторной работы №3 у одного из пользователей имеется результат её выполнения в таблице user_labs, то для всех других пользователей она этим запросом выводится не будет...
...
Рейтинг: 0 / 0
Помогите с join и max
    #39241808
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
klafenНужно получить список активных лабораторных работ с максимальным результатом по данной лабораторной работе какого-то определенного пользователя.А точнее?

получить список лаб, по которым максимальную оценку получил пользователь икс?
-или-
получить список лаб, в которых принимал участие пользователь икс, и для каждой вывести макс.оценку?
...
Рейтинг: 0 / 0
Помогите с join и max
    #39241842
klafen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, вывести весь список активных (доступных) лаб и если у пользователя есть по ним попытки сдачи, то вывести максимальную оценку среди всех попыток этого пользователя, если нет попыток, то NULL.

Например, всего 6 лабораторных, шестая неактивна. Пользователь 1 имеет попытки сдачи по первой и второй лабе, пользователь 2 имеет попытки сдачи по первой лабе, пользователь 3 не имеет ни одной попытки ни по одной лабе.

Для первого пользователя результат должен получиться такой:

lab.id | result
1 | 10
2 | 5
3 | NULL
4 | NULL
5 | NULL

Для второго пользователя:

lab.id | result
1 | 5
2 | NULL
3 | NULL
4 | NULL
5 | NULL

А для третьего:

lab.id | result
1 | NULL
2 | NULL
3 | NULL
4 | NULL
5 | NULL
...
Рейтинг: 0 / 0
Помогите с join и max
    #39241886
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
SELECT labs.id, labs.shortcaption, max(lab_users.result) AS result 
FROM labs LEFT JOIN user_labs ON labs .id = user_labs.labid AND lab_users.userid=10
WHERE labs.active = 1
GROUP BY labs.id, labs.shortcaption
...
Рейтинг: 0 / 0
Помогите с join и max
    #39243466
klafen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заработало! спасибо большое за помощь!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с join и max
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]