Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoa beleza?
Estou tentando fazer o seguinte...
tenho uma tabela no banco de dados onde tenho anúncios cadastrados...nesta tabela tenho 2 campos um de 'cpc' (custo por crédito) e outro 'creditos'...
o que quero fazer é o seguinte:
1º verificar se o campo 'creditos' é maior que '0'
2º se for maior que '0' ordeno a tabela pelo campo 'cpc'
só q quero isso dentro do select. Tentei isso:
SELECT * FROM anuncios ORDER BY IF(creditos > 0) cpc DESC
só que não funcionou até agora... tem como alguém me dar uma luz aí? Valeu!!
Quase motta...
A questão é que analiso 1 campo e ordeno pelo outro
o problema é que se o cara não tiver créditos na conta eu não posso ordenar pelo campo cpc. Por isso preciso verificar se o campo créditos é > que 0 para depois ordenar pelo cpc
mas valeu mesmo assim...
Mas é se não for por cpc?
Lembre que o ORDER BY é linha a linha.
Pelo que entendi ...
SELECT *
FROM anuncios
ORDER BY (case when (creditos > 0) then cpc else ??? end) DESC
Eu tenho outros ordenações só não postei para não complicar..
Posta um exemplo pequeno do que precisa.
É mais ou menos assim:
SELECT anuncios1.* FROM anuncios1 INNER JOIN conta_user ON anuncios1.dono = conta_user.email WHERE verificacao > 1 AND status = 'mostrar' ORDER BY (case when (conta_user.creditos > 0) then anuncios1.cpc end) DESC, cliques DESC, visualizacoes DESC
Parece que a ideia que tu mostrou deu certo!! Valeu! Vou testar e depois lhe digo...
ok
Veja se ajuda
http://forum.imasters.com.br/topic/480938-ordenar-por-mais-de-um-filtro/page__p__1911056__hl__%2Border+%2Bcase__fromsearch__1#entry1911056
http://forum.imasters.com.br/topic/475414-consulta-mysql/page__p__1888998__hl__%2Border+%2Bcase__fromsearch__1#entry1888998