Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoas,
Estou tentando fazer uma consulta randômica em postgres que até ai tudo bem, a bronca esta na repetição dos registros, não estou conseguindo
Estou pesquisando a um tempo e n consegui uma informação bacana... estou em duvida s resolvo isso em php ou no próprio sql s alguém puder me dar uma dica fico agradecido.
Segue a consulta:
$sql = "SELECT * FROM teste ORDER BY random() LIMIT 10 OFFSET 0 ";
$resultado = pg_query($sql) or die ("Problema na Consulta");
$linhas = pg_num_rows($resultado);
while ($linha = pg_fetch_array($resultado)){}
vlws
>
Basta utilizar a função DISTINCT
:seta: http://www.w3resource.com/PostgreSQL/distinct.php
$sql = "SELECT DISTINCT colunadesejada FROM teste ORDER BY random() LIMIT 10 OFFSET 0 ";
Vlws Alaerte... tentei fazer dessa maneira mas n funfou... esta dando falha na consulta e infelizmente n tenho como visualizar a descrição do erro pq estou trabalhando em um servidor institucional que n permite visualizar.
+ Estou pesquisando sobre... ess deve ser o caminho. \o_
Isso, veja que existem vários meios com o distinct, tipo:
SELECT campos DISTINCT ON...
E por aí vai...
>
Isso, veja que existem vários meios com o distinct, tipo:
SELECT campos DISTINCT ON...
E por aí vai...
Estava dando uma olhada..
Até tentei fazer assim:
$sql = "SELECT DISTINCT ON (id) FROM pergunta ORDER BY random() LIMIT 10 OFFSET 0 ";
$sql = "SELECT DISTINCT ON (coluna) FROM pergunta ORDER BY random() LIMIT 10 OFFSET 0 ";
N tive muito sucesso.. ^^com certeza ID repetido você não vai ter, tem que colocar o nome da coluna a qual você recebe os dados repetidos...
com certeza ID repetido você não vai ter, tem que colocar o nome da coluna a qual você recebe os dados repetidos...
Pow man, já tentei inserir o DISTINCT de tudo q é jeito e n consegui fazer funfar...
Vou tenta pular pra parte logica.. ver s consigo algo... qualquer coisa posto aqui. vlws pela força
Retire o OFFSET 0 da consulta e tente.
Retire o OFFSET 0 da consulta e tente.
Pronto Alaerte, depois de mutias tentativas, descobri que a bronca esta na funcao random(), substituindo o sql abaixo:
$sql = "SELECT DISTINCT * FROM pergunta p ORDER BY random() LIMIT 5 OFFSET 0";
por:
$sql = "SELECT DISTINCT * FROM pergunta ORDER BY id LIMIT 5 OFFSET 0 ";
Ele funciona, porém perco os resultados randomicos....
A bronca agora é fazer a consulta randômica. Ta chegando srsrsr
Não tem porque dar erro, a função random() está correta, retire o offset 0 e teste com o random e o distinct
Não tem porque dar erro, a função random() está correta, retire o offset 0 e teste com o random e o distinct
Fiz isso tambbém.. e n funfou T_T
Só funfou quando retirei o RANDOM();
O tenso é que n tenho como visualizar o erro.
Tentei dessa forma tb:
$sql = "SELECT DISTINCT t. FROM (SELECT FROM teste ORDER BY random())as t LIMIT 5 OFFSET 0 ";
masss.. n tive mto exito.. ate exibiu as informacoes aleatorias, mas tipo quando peço para dar novamente um random, ele so altera a posicao de 2 registros, por falta de conhecimento ainda n sei o pq... mas ta chegando... ^^
VLws
RESOLVIDO!
Seguindo a dica de Alaert Gabriel, consegui resolver inserindo o DISTINCT da seguinte forma:
$sql = "SELECT DISTINCT random(),* FROM teste LIMIT 5 OFFSET 0";
N sei s é a forma mais adequada.. mas funcionou.
Dessa maneira consigo inserir os valores aleatórios da minha tabela dentro de um array, sem repetição.
Vlws pela ajuda Alaerte. abraço
Beleza, se funcionou corretamente, então é a forma correta, caso contrário iria gerar erros, etc. :)
Basta utilizar a função DISTINCT
:seta: http://www.w3resource.com/PostgreSQL/distinct.php
$sql = "SELECT DISTINCT colunadesejada FROM teste ORDER BY random() LIMIT 10 OFFSET 0 ";