Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

vitoque

utilizar if numa query

Mensagens Recomendadas

vitoque    0
vitoque

Boa tarde a todos, precisava de uma ajuda:

Tenho

Table -> produtos

Campos -> id,produto,data,estado

select * from produtos order by data desc

Quero fazer uma pesquisa e criar um "campo virtual" chamado "ordem" e dizer :

se o campo estado for activo ordem é 1 senao ordem é 2

fazer rand ao que for ordem 1 e o 2 ordenar por ordem de data crescente o ordem 2

é possivel ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
yoda    139
yoda

Boas,

Parece-me que estás a complicar um bocado as coisas .. Vamos la ver o seguinte: Cada entrada dessa tabela tem um estado, logo toda essa conversa do campo virtual, ordem, etc, não faz sentido nenhum. Podes ser um pouco mais explícito?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vitoque    0
vitoque

Vejamos quero que no resultado aparece logo em primeiro os que estao activos e esses activos a fazer RANDOM entre eles e so posteriormente é que vinham os desactivos e ordenar por data descendente...

A historia do campo virtual(ordem) era para atribuir valores aos activos que ficariam com 1 e os desactivos com 2 e depois ordenaria por o campo ordem foi essa a ideia Yoda.pt, se calhar estou mesmo a complicar...

Boas,

Parece-me que estás a complicar um bocado as coisas .. Vamos la ver o seguinte: Cada entrada dessa tabela tem um estado, logo toda essa conversa do campo virtual, ordem, etc, não faz sentido nenhum. Podes ser um pouco mais explícito?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
yoda    139
yoda

Sim, já estou a ver.

O mais simples seria executar duas queries, ou seja :

SELECT * FROM produtos WHERE estado=1;

SELECT * FROM produtos WHERE estado=2 ORDER BY data DESC;

// Na primeira query :

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $tmp_list[] = $row 
}

array_shift($tmp_list)

foreach ($tmp_list as $row) {
    $list[] = $row;
}

// na segunda linha:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $list[] = $row; 
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vitoque    0
vitoque

Sim, já estou a ver.

O mais simples seria executar duas queries, ou seja :

SELECT * FROM produtos WHERE estado=1;

SELECT * FROM produtos WHERE estado=2 ORDER BY data DESC;

// Na primeira query :

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $tmp_list[] = $row 
}

array_shift($tmp_list)

foreach ($tmp_list as $row) {
    $list[] = $row;
}

// na segunda linha:

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $list[] = $row; 
}

Mas eu pretendia fazer tudo numa so query uma vez que pretendo usar paginação!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
yoda    139
yoda

vitoque, duvido que consigas (e caso consigas, será uma query de arrastar o servidor todo) ... se for uma lista ordenada pelo estado e data, é fácil, agora teres uma lista onde metade é aleatoriamente mostrado (o que consome muita memoria) e outra metade e ordenado pela data ..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vitoque    0
vitoque

Mas como tu disseste em cima é possivel fazer em duas query e depois fazer paginação? é que custumo fazer tudo numa so query!

vitoque, duvido que consigas (e caso consigas, será uma query de arrastar o servidor todo) ... se for uma lista ordenada pelo estado e data, é fácil, agora teres uma lista onde metade é aleatoriamente mostrado (o que consome muita memoria) e outra metade e ordenado pela data ..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vitoque    0
vitoque

É possível fazer certas coisas com queries dentro de outras, mas o problema que queres não me parece possível.

Muito obrigado yoda.pt, caso alguem saiba alguma maneira que post.

Abraço

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade