É 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