Jump to content

utilizar if numa query


vitoque

Recommended Posts

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 ?

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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; 
}
Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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 ..

Link to comment
Share on other sites

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 ..

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.