Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché Новый топик    Ответить
 sql order by random  [new]
Sabyrov.Talgat
Member

Откуда:
Сообщений: 266
У Cache' SQL много функций отсутствует, в том числе и Rand(), Random(), newid() и тд.
Мне нужно отсортировать полученный запрос в случайном порядке.

select * from Persons
order by random()

select * from Persons
order by rand()

select * from Persons
order by newid()

Ни один из запросов не работает. Прошу помочь!!!
13 фев 17, 07:52    [20205900]     Ответить | Цитировать Сообщить модератору
 Re: sql order by random  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12843
Sabyrov.Talgat
Мне нужно отсортировать полученный запрос в случайном порядке.

Не совсем понятна такая надобность...

Но, если запрос делается динамически - можно написать функцию, которая выдаст список свойств класса в произвольном порядке.
Эту последовательность можно вставить в формирование запроса...
13 фев 17, 08:48    [20205983]     Ответить | Цитировать Сообщить модератору
 Re: sql order by random  [new]
imdb
Member

Откуда: Москва
Сообщений: 132
Sabyrov.Talgat
У Cache' SQL много функций отсутствует, в том числе и Rand(), Random(), newid() и тд.

Странно! Сама функция rand() есть, даже в относительно старых версиях, но при запуске дает ошибку, что ее нет.
Похоже, что в документацию записали, а реализовать забыли!
13 фев 17, 10:00    [20206169]     Ответить | Цитировать Сообщить модератору
 Re: sql order by random  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2380
imdb
Sabyrov.Talgat
У Cache' SQL много функций отсутствует, в том числе и Rand(), Random(), newid() и тд.

Странно! Сама функция rand() есть, даже в относительно старых версиях, но при запуске дает ошибку, что ее нет.
Похоже, что в документацию записали, а реализовать забыли!
RAND() реализован только в диалекте TSQL. если нужно использовать в Caché диалекте, то можно вызвать так $TSQL_RAND(), либо переключится на TSQL диалект
13 фев 17, 10:20    [20206275]     Ответить | Цитировать Сообщить модератору
 Re: sql order by random  [new]
imdb
Member

Откуда: Москва
Сообщений: 132
DAiMor
imdb
пропущено...

Странно! Сама функция rand() есть, даже в относительно старых версиях, но при запуске дает ошибку, что ее нет.
Похоже, что в документацию записали, а реализовать забыли!
RAND() реализован только в диалекте TSQL. если нужно использовать в Caché диалекте, то можно вызвать так $TSQL_RAND(), либо переключится на TSQL диалект

Соседняя RADIANS() спокойно отрабатывает в обычном sql-запросе, без всяких "переключений".
13 фев 17, 12:21    [20206909]     Ответить | Цитировать Сообщить модератору
 Re: sql order by random  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2380
imdb
DAiMor
пропущено...
RAND() реализован только в диалекте TSQL. если нужно использовать в Caché диалекте, то можно вызвать так $TSQL_RAND(), либо переключится на TSQL диалект

Соседняя RADIANS() спокойно отрабатывает в обычном sql-запросе, без всяких "переключений".
Да, потому что эта функция реализована в Caché диалекте
13 фев 17, 13:14    [20207240]     Ответить | Цитировать Сообщить модератору
 Re: sql order by random  [new]
ну я
Member

Откуда: Stalingrad
Сообщений: 1102
Sabyrov.Talgat,

А написание своей sqlproc в задаче допускается или надо использовать только штатные функции дефолтной инсталляции Cache?
15 фев 17, 15:31    [20214484]     Ответить | Цитировать Сообщить модератору
 Re: sql order by random  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3531
Class SQL.Util
{
ClassMethod Random(max As %Integer = 100, key As %String) As %Integer [ SqlProc ]
{
	return $random(max)
}
}

select *,sql.util_random(100,id) from table

Второй параметр нужен для того, чтобы Каше не надумала оптимизировать вызовы (без него во всех строках будет одно и то же значение)
16 фев 17, 22:31    [20219606]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché Ответить