Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

regina

[Resolvido] if ou case no select mysql

Recommended Posts

Bom dia,

 

tenho um select onde gostaria que, dependendo do valor de um campo ordenasse de uma forma, dependendo do valor de outra, tem como fazer isso?

 

$sql=mysql_query("SELECT campo1,campo2,campo3 FROM tb_opiniao WHERE pesquisa_id='$pesquisa' AND exibir='sim' IF (ordem_resposta='aleatoria' ORDER BY opiniao_id ASC) ELSE (ORDER BY opiniao_id RAND()))") or die (mysql_error());

Agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o campo for da mesma tabela pode embarralhar a ordenação , mas dá até para fazer

 

order by (case when opcao=1 then nome else codigo end)

Talvez fique melhor como um parametro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

coloquei assim:

 

$sql=mysql_query("SELECT campo1,campo2,campo3 FROM tb_opiniao WHERE pesquisa_id='$pesquisa' AND exibir='sim' ORDER BY (CASE WHEN ordem_resposta='aleatoria' THEN opiniao_id ASC ELSE opiniao_id RAND() END)") or die (mysql_error());
O campo é o mesmo, só o tipo de ordenação que muda de ASC para RAND, e é justamente onde dá o erro

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC ELSE pergunta_id RAND() END)' at line 1

Grata

Compartilhar este post


Link para o post
Compartilhar em outros sites
ORDER BY (CASE WHEN ordem_resposta='aleatoria' THEN RAND() ELSE opiniao_id END) ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigada Motta,

 

funcionou, só não está exibindo os dados.

 

    $reg=mysql_num_rows($sql);
    while($row=mysql_fetch_array($sql)){
      <h3><?php print $row["campo1"]; ?></h3>
      if(!empty($row["campo2"])) print nl2br($row["campo2"]);
não traz o valor dos campos, mas se imprimir o mysql_num_rows($sql) exibe a quantidade de registros 4.

 

Grata

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que o Membro ainda tem dúvida, não está resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.