ORDER BY não se comparta como esperado, método RAND
18/09/2014
0
creio eu que a formação do código seria mais ou menos essa..
SELECT id FROM posts ORDER BY rand() LIMIT 5;
esse é a linha do meu código.
$posts = DBRead('posts', "WHERE status = 1 ORDER BY id DESC LIMIT 5");
e está funcionando perfeitamente.
acho que assim deveria funcionar naomalmente trazendo posts aleatórios mas nada até o momento da erro :(
$posts = DBRead('posts', "WHERE status = 1 ORDER BY id rand() LIMIT 5");
Esse é o erro que aparece no meu navegador.
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'RAND() LIMIT 6' at line 1
Cleyton Caetano
Posts
18/09/2014
Claudio Lopes
19/09/2014
Cleyton Caetano
não entendi, tem como usar o RAND fora do comando sql?
19/09/2014
William
19/09/2014
Cleyton Caetano
Justamente, até onde eu vejo está tudo certo, quando uso DESC funciona normalmente mas quando uso o RAND() não funciona da erro!
meu código
$posts = DBRead('posts', "WHERE status = 1 ORDER BY id DESC LIMIT 5");
meu erro!
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'RAND() LIMIT 6' at line 1
19/09/2014
William
$posts = DBRead('posts', "WHERE status = 1 ORDER BY id rand() LIMIT 5");
O erro que está dando não é por causa do RAND() e sim por causa do campo 'id' depois de ORDER BY, porque você está usando o RAND().
20/09/2014
Cleyton Caetano
$posts = DBRead('posts', "WHERE status = 1 ORDER BY id rand() LIMIT 5");
O erro que está dando não é por causa do RAND() e sim por causa do campo 'id' depois de ORDER BY, porque você está usando o RAND().
entendi, o problema é que eu estava definindo o id para ordenar os registros, tirei o id e está funcionando perfeitamente agora, obrigada mesmo :D
23/09/2014
Claudio Lopes
$id1 = rand(1,10);
$id2 = rand(11,20);
$id3 = rand(21,30);
use as variaveis na query
$posts = DBRead('posts', "WHERE status = 1 and id in ($id1,$id2,$id3) ORDER BY id DESC LIMIT 5");
ai você concatena da forma que funciona ai.. so te dei a ideia.....
o rand possui um valor min e max.. vocÊ pode retornar isso do banco e passar como parametro
24/09/2014
Cleyton Caetano
$id1 = rand(1,10);
$id2 = rand(11,20);
$id3 = rand(21,30);
use as variaveis na query
$posts = DBRead('posts', "WHERE status = 1 and id in ($id1,$id2,$id3) ORDER BY id DESC LIMIT 5");
ai você concatena da forma que funciona ai.. so te dei a ideia.....
o rand possui um valor min e max.. vocÊ pode retornar isso do banco e passar como parametro
Legal, mas a seleção que quero fazer é super aleatória mesmo!
só o rand() resolveu meu problema!
$posts = DBRead('posts', "WHERE status = 1 ORDER BY rand() LIMIT 5");
Clique aqui para fazer login e interagir na Comunidade :)