Ir para conteúdo

POWERED BY:

Arquivado

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

LF_HERNANDES

Menor preço - posição com quantidade zero

Recommended Posts

Bom dia pessoal, estou fazendo um e-commerce e não estou conseguindop fazer com que quando o cliente ordene por menor preço ele siga a ordem porem os que tiverem quantidade zero aparecem por último.

 

estou utilizando a seguinte select

 

$sql = mysql_query("SELECT TITULO, VALOR, VALOR2, CODGRUPO, CODSOFTA, QTDE FROM produtos WHERE TITULO  LIKE '%$Busca_Pesquisa%' ORDER BY VALOR ASC, QTDE DESC LIMIT $inicial, $numreg");

Desde já agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue os campos da tabela

 

CREATE TABLE `produtos` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `CODSOFTA` int(11) NOT NULL,
  `TITULO` varchar(29) COLLATE latin1_general_ci NOT NULL,
  `DESCRICAO` varchar(60) COLLATE latin1_general_ci NOT NULL,
  `DESTAQUE` char(1) COLLATE latin1_general_ci NOT NULL,
  `PESO` varchar(7) COLLATE latin1_general_ci NOT NULL,
  `QTDE` int(11) NOT NULL,
  `VALOR` float(10,2) NOT NULL,
  `VALOR2` float(10,2) NOT NULL,
  `CODGRUPO` int(11) NOT NULL,
  `OBS` text COLLATE latin1_general_ci NOT NULL,
  `INFORMACAO` text COLLATE latin1_general_ci NOT NULL,
  `DTECNICO` text COLLATE latin1_general_ci NOT NULL,
  `IINCLUSO` text COLLATE latin1_general_ci NOT NULL,
  `COMPRIMENTO` decimal(10,0) NOT NULL,
  `ALTURA` decimal(10,0) NOT NULL,
  `LARGURA` decimal(10,0) NOT NULL,
  `CUBICO` decimal(10,0) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=19 ;


Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazendo o teste que me atentei a uma coisa

 

ORDER BY VALOR ASC, QTDE DESC

Ele ta ordenando primeiro pelo valor e depois pela quantidade.

por isso o 0 fica por último e ele não fica em ordem

 

 

Perfeito amigo, obrigado.

 

Porem agora a ordenação de valores não ficou correta... existe algo que possa unir isto... ele seguir o menor preço e a quantidade ir p; último?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que você está utilizando PHP faça duas consultas

 

$sql1 = mysql_query("SELECT TITULO, VALOR, VALOR2, CODGRUPO, CODSOFTA FROM produtos WHERE TITULO LIKE '%$Busca_Pesquisa%' ORDER BY VALOR ASC LIMIT $inicial, $numreg");
$sql2 = mysql_quety("SELECT QTDE FROM produtos WHERE TITULO LIKE '%$Busca_Pesquisa%' ORDER BY QTDE DESC LIMIT $inicial, $numreg");

Depois é só juntar os dois na hora de mostrar.

 

Ps: Eu não cheguei a testar então da uma verificada antes de testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que você está utilizando PHP faça duas consultas

 

$sql1 = mysql_query("SELECT TITULO, VALOR, VALOR2, CODGRUPO, CODSOFTA FROM produtos WHERE TITULO LIKE '%$Busca_Pesquisa%' ORDER BY VALOR ASC LIMIT $inicial, $numreg");
$sql2 = mysql_quety("SELECT QTDE FROM produtos WHERE TITULO LIKE '%$Busca_Pesquisa%' ORDER BY QTDE DESC LIMIT $inicial, $numreg");

Depois é só juntar os dois na hora de mostrar.

 

Ps: Eu não cheguei a testar então da uma verificada antes de testar.

 

 

Amigo como eu faço para unir estas 2 select?

Compartilhar este post


Link para o post
Compartilhar em outros sites


SELECT TITULO, VALOR, VALOR2, CODGRUPO, CODSOFTA, QTDE

FROM produtos

WHERE TITULO LIKE '%$Busca_Pesquisa%'

ORDER BY (if(QTDE = 0,0,1)) DESC , VALOR ASC, QTDE DESC

LIMIT $inicial, $numreg

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT TITULO, VALOR, VALOR2, CODGRUPO, CODSOFTA, QTDE 
FROM produtos 
WHERE TITULO  LIKE '%$Busca_Pesquisa%' 
ORDER BY (if(QTDE = 0,0,1)) DESC , VALOR ASC, QTDE DESC
LIMIT $inicial, $numreg

 

Perfeito pessoal, obrigado pela ajuda

 

Só uma dúvida o que seria QTDE = 0,0,1 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

if(qtde=0,0,1) DESC

 

 

se a qtde eh igual a 0 atribua zero , senao atribua 1 e ordene pelo maior valor (os 1 no caso)

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.