Задавайте вопросы, мы ответим
Вы не зашли.
Имеется запрос, состоящий из 2х SELECT'ов и объединяющего их UNION'a. Первый запрос, если его выполнить отдельно, возвращает все как нужно, то есть все отсортировано по submid. Второй запрос сам по себе не возвращает ничего. Однако если объединить их UNIONом, Порядок строк почему-то меняется о_О. Т.е. submid не отсортировано, а совершенно хаотично.. 50,49,51,47..
Собственно не могу понять, с чем это связано. Запрос ниже:
(
SELECT fsbm.id AS submid, fsbm. * , f. * , u.id AS userid, u.firstname, u.lastname, gm.groupid
FROM mdl_fileupload_submissions fsbm, mdl_fileupload f, mdl_user u, mdl_groups_members gm
WHERE course =3
AND fsbm.user_id = u.id
AND f.id =9
AND f.id = fsbm.fileupload_id
AND gm.userid = u.id
AND timemarked =0
ORDER BY submid ASC
)
UNION
(
SELECT fsbm.id AS submid, fsbm. * , f. * , u.id AS userid, u.firstname, u.lastname, gm.groupid
FROM mdl_fileupload_submissions fsbm, mdl_fileupload f, mdl_user u, mdl_groups_members gm
WHERE course =3
AND fsbm.user_id = u.id
AND f.id =9
AND f.id = fsbm.fileupload_id
AND gm.userid = u.id
AND timemarked <>0
ORDER BY timemarked DESC
);
Неактивен
Результат UNION не обязан быть отсортирован. Если хотите сортировку, то ее следует выполнить вне UNION
Неактивен
спасибо, решил проблему при помощи генерации 2х дополнительных полей.. и последующей сортировкой по ним. Если запрос критичен к скорости, это, возможно, не лучший вариант, но работу свою он делает)
Неактивен