estou com uma duvida em uma condicao numa query que é a seguinte:
eu coloquei uma variavel, nao obrigatoria… que pede para o usuario digitar (0) NAO e (1) SIM ou não entra com valor algum…
%
…
$ST={SOB CUSTODIA?;;N;}@ SIM (1) | NAO (0)
%
ai coloquei uma condicao para analizar esse campo…
WHERE
…
status=[$ST]
…
a select roda… se a pessoa digitar 0 ou 1, mas se ela não digita nd… num roda…
da erro de syntax… e eu queria que se a pessoa não digitasse nd…
Isso provavelmente ocorre, porque quando o usuário não digita nada, o “WHERE” fica quebrado, assim: "WHERE status = ", como não tem nada para comparar, dá erro de sintaxe. Você tem que pensar numa lógica em que, quando o usuário não digitar nada, você some com essa condição.
essa é a select… eu vi que meu problema é o seguinte…
como o colega citou … quando minha select volta null… ele não tem como igualar a nd…
nesse caso as respostas possiveis sao 0 e 1… eu precisaria… pegar os 2 resultados se fosse null…
mas num sei como fazer isso… se algum puder me ajudar… coloco outra duvida relacionada… se eu tivesse
as opcoes 1, 2, 3, 4, 5… e eu quissesse 1, 3,4… por exemplo… tipo um IN… tipo:
escolha de 1 a 5… se nulll retorne (1,3,4)… é tipow esse select tb…
SELECT @var:=@var+1 AS Item,
CONCAT(cpdue.storeno) AS Loja,
CONCAT(custp.no," ",custp.name) AS Cliente,
(cpdue.checkno*1000) AS Cheque___,
DATE_FORMAT(cpdue.postdate,’%d/%m/%y’) AS Vencto,
cpdue.amt AS _____Valor,
if(cpdue.bits=0,‘NAO’,‘SIM’) AS Custodia
FROM
sqldados.cpdue
LEFT JOIN
sqldados.custp ON (custp.no = cpdue.custno)
LEFT JOIN
sqldados.store ON (store.no = custp.storeno)
WHERE
cpdue.postdate BETWEEN [$DI] AND [$DF] AND
cpdue.status=[$CT]
ORDER BY
cpdue.postdate,cpdue.storeno,custp.name
Qual o banco de dados que você usa? Pode ser que ele já possua funções ou estruturas que permitem resolver esse problema.
Procure ver se existe o CASE (http://dev.mysql.com/doc/refman/5.0/en/case-statement.html), que eu acho que seria o mais adequado para resolver seu problema, apesar dessa documentação ser do MySQL, ele existe em vários outros bancos (sei que tem no Postgres e no SQLServer).