É isso mesmo, achei no manual do mysql:
"You cannot use a column with |RAND()| 
<http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand>
 
values in an |ORDER BY| clause, because |ORDER BY| would evaluate the 
column multiple times. However, you can retrieve rows in random order 
like this:" SELECT * FROM tbl_name ORDER BY RAND();

Valeu !

abs

Edinho Almeida escreveu:
> Oi Marco,
> order by 'title' rand()
> e
> order by 'id' rand()
>
> não interfere na ordenação inclusive dá erro de sql.
>
> seria montado como:
> order by rand()
>
> Será?
> Abs
> Edinho Almeida
>
> 2008/4/3 Renato Costa Barbosa <[EMAIL PROTECTED]>:
>   
>> Bom realmente eu vi... falha minha, entre os parametros existe o random
>>  mesmo....
>>  desculpe galera
>>
>>
>>
>>  Em 03/04/2008, às 14:41, Marco Telles escreveu:
>>
>>
>>
>>  > Oi Edinho, não querendo discordar, mas esclarecer, nesse caso não vejo
>>  > falha na documentação.
>>  > No guia está bem claro: o order_by tem dois parâmetros, onde o segundo
>>  > parâmetro é a direção do resultado, e que as opções são:  asc or desc,
>>  > or random.
>>  >
>>  > Olhando a librarie, fica mais claro. O random é apenas "maquiagem"
>>  > porque ele é substituído pelo rand() do mysql, conforme trecho:
>>  >>     function order_by($orderby, $direction = '')
>>  >>     {
>>  >>         if (strtolower($direction) == 'random')
>>  >>         {
>>  >>             $orderby = ''; // Random results want or don't need a
>>  >> field name
>>  >>             $direction = $this->_random_keyword;
>>  >>         }
>>  > Onde $this->_random_keyword = ' RAND()'; // database specific random
>>  > keyword
>>  >
>>  > Agora só não entendi porque ao passar o rand ele desconsidera a coluna,
>>  > já que eu posso querer ordenar por qualquer coluna não é mesmo ? Ou
>>  > estou enganado ?
>>  >
>>  > Abs
>>  >
>>  >
>>  > Edinho Almeida escreveu:
>>  >> Tenho que concordar que na documentação não ficou claro.
>>  >>
>>  >> olhando em system/database/DB_active_rec.php linha 763
>>  >>
>>  >> vi que a string "random" deve ser passado como segundo argumento e não
>>  >> importará o primeiro argumento.
>>  >>
>>  >> Se passar assim:
>>  >> $this->db->order_by('rand()');
>>  >> obterás:
>>  >> order by `rand()` //porque o ci vai formatar o rand() como se fosse
>>  >> coluna
>>  >>
>>  >>
>>  >> então fica:
>>  >> $this->db->order_by("", "random");
>>  >> ou
>>  >> $this->db-
>>  >> >order_by("nada_aqui_fara_direferenca_se_o_argumento_seguinte_for_rand
>>  >> om",
>>  >> "random");
>>  >>
>>  >> No Change Log do 1.6.0
>>  >> Added 'random' as an order_by() option , and removed "rand()" as a
>>  >> listed option as it was MySQL only.
>>  >>
>>  >>
>>  >> Abs
>>  >> Edinho Almeida
>>  >>
>>  >>
>>  >>
>>  >>
>>  >>
>>  >>
>>  >> On Thu, Apr 3, 2008 at 11:32 AM, Marco Telles
>>  >> <[EMAIL PROTECTED]> wrote:
>>  >>
>>  >>> Renato
>>  >>>
>>  >>> CodeIgniter User Guide Version 1.6.1
>>  >>>
>>  >>>
>>  >>>
>>  >>>> $this->db->order_by();
>>  >>>>
>>  >>>> Lets you set an ORDER BY clause. The first parameter contains the
>>  >>>> name
>>  >>>> of the column you would like to order by. The second parameter lets
>>  >>>> you
>>  >>>> set the direction of the result. *Options are asc or desc, or
>>  >>>> random.*
>>  >>>> $this->db->order_by("title", "desc");
>>  >>>>
>>  >>>> // Produces: ORDER BY title DESC
>>  >>>>
>>  >>>> You can also pass your own string in the first parameter:
>>  >>>> $this->db->order_by('title desc, name asc');
>>  >>>>
>>  >>>> // Produces: ORDER BY title DESC, name ASC
>>  >>>>
>>  >>>> Or multiple function calls can be made if you need multiple fields.
>>  >>>>
>>  >>>> $this->db->order_by("title", "desc");
>>  >>>> $this->db->order_by("name", "asc");
>>  >>>>
>>  >>>> // Produces: ORDER BY title DESC, name ASC
>>  >>>>
>>  >>>>
>>  >>> Vê se ajuda... ;) E olha que eu ando enxergando mal... heheheheh
>>  >>>
>>  >>> Muita sorte para nós!
>>  >>>
>>  >>> Marco Telles
>>  >>>
>>  >>>
>>  >>>
>>  >>>
>>  >>> Renato Costa Barbosa escreveu:
>>  >>>
>>  >>>
>>  >>>> Opa
>>  >>>> Yeah, li sim,
>>  >>>> eu estyou usando a 1.6.1 e procurei na sessão Database Library, me
>>  >>>> apeguei mais no tópico active record, mas na pesquisa inteira, eu
>>  >>>> num
>>  >>>> achei nada fala fale sobre o rand
>>  >>>> Normalmente eu uso o sql dessa forma SELECT * FROM table ORDER BY
>>  >>>> RAND(), apenas para randomizar sem nenhum tratamento
>>  >>>>
>>  >>>>
>>  >>>>
>>  >>>
>>  >>>
>>  >>>
>>  >>> _______________________________________________
>>  >>> Lista mailing list
>>  >>> [email protected]
>>  >>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>  >>>
>>  >>>
>>  >>
>>  >>
>>  >>
>>  >>
>>  >
>>  > _______________________________________________
>>  > Lista mailing list
>>  > [email protected]
>>  > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>  >
>>  >
>>  _____________________________________________
>>  Renato Costa Barbosa
>>  Comunicação e Design - ISIC Brasil
>>  Fones: (18) 9119 5134  -  (18) 2102 4710
>>  [EMAIL PROTECTED] - http://www.isic.com.br
>>  Soluções em Negócios Eletrônicos
>>  _____________________________________________
>>
>>
>>
>>
>>  _______________________________________________
>>  Lista mailing list
>>  [email protected]
>>  http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>>
>>     
>
>
>
>   

_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a