Главная Новые темы Список тем Задать вопрос Поиск  

Форум "DataBase и SQL"


Язык запросов баз даных


 #0 VictorT © 18.04.06 15:46:43 - 19.04.06 11:46:14

Проблема с union в MySQL



запрос такого вида работает:
(select ...)
union
(select ...)
union
(select ...)
union
(select ...)
order by rand() limit n

добавляюю две скобки (выделены жирным) то перестаёт работать:
(select ...)
union
(select ...)
union
((select ...)
union
(select ...)
order by rand() limit n)

Т.е. мне нужна такая логика работы запроса, чтобы order by rand() limit n было применено только к последним двум select-ам.
Как добится такого результата? Цитата

 #1 Deep © 18.04.06 17:04:25

>#0   VictorT ©
сортировка происходит после ВСЕХ ввыборок и группировок....
так что боюсь, выход один --
1)помечать записи из другого селекта
2)делать рандом-сортировку полученых помеченных записей на клиенте
 #2 VictorT © 18.04.06 17:51:29

> сортировка происходит после ВСЕХ ввыборок и группировок....
Да вот не обязательно как раз. В документации написано, что можно сортироватаь как все вместе, так и по отдельности каждый select. B для двух select-ов и одного union это у меня действительно рабатоет, как по отдельности, так и вместе. А для 4-х select-ов и о2-х union почему-то не хочет работать. Ссылка на ман:

> 1)помечать записи из другого селекта
 в смысле? Что это даёт?
> 2)делать рандом-сортировку полученых помеченных записей
> на клиенте
Абсолютно не подходит. Ты, видимо, не понял смысл инструкции order by rand() limit n (n довольно маленькое, меньше 10-ти).
Смысл в том, что из большого массива информации случайно выбираются только несколько строк. Перемешивать уже на клиенте нет никакого смыла 2-3 неслучайных строки.
 #3 VictorT © 19.04.06 11:37:26

Получилось вот так:
select ...
union
select ...
union select * from
(
select ...
union
select ...
order by rand() limit n
) as tbl
 #4 VictorT © 19.04.06 11:45:31

З.Ы. union не хочет обьеденять результат другого union, обьеденяет только результат select. Засунул один union в select.
 #5 Deep © 19.04.06 11:46:14

мда...
оказывается MySQL тоже на извраты горазд    




  • Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов