FUNCAO SQL
tem como eu pesquisar em um banco de dados usando uma sql string que tenha mais de uma comparação? tipo:
tem jeito?
Select From os Where status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#;
tem jeito?
SIM...
é exatamente assim. Vc só não colocou os campos após o SELECT
é exatamente assim. Vc só não colocou os campos após o SELECT
SELECT a.Nome, b.Endereco
FROM tbCliente a
INNER JOIN tbEnderecos b
ON a.id_Cliente = b.id_cliente
WHERE a.Nome LIKE [ô]%JORGE%[ô]
AND a.Dt_Inclusao BETWEEN #01/01/2008# AND #31/12/2008#
AND b.UF = [ô]SP[ô]
Sim claro que sim você pode ter N critérios de comparação
certo mas no caso as comparações sao todas na mesma tabela, sem o uso do inner join. tbm funciona?
tente assim
Select * From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô]) and (Datent Between #01/09/2009# and #01/10/2009#);
Bom,
Vc pode fazer mais de 1001 coisas com SQL, desde que bem aplicado:
Vc pode criar blocos de comparacoes, delimitando-os com parênteses:
Select From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#) or
status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE2[ô] and Datent Between #01/01/2009# and #01/12/2009#;
Select From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#) or
status = [ô]PENDENTE[ô] And cliente = [ô]CLIENTE2[ô] and Datent Between #01/09/2009# and #01/10/2009#;
Isso, considerado somente estes campos. Imagine que dá pra vc fazer muito mais, inclusive com consulta união.
Vc pode fazer mais de 1001 coisas com SQL, desde que bem aplicado:
Vc pode criar blocos de comparacoes, delimitando-os com parênteses:
Select From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#) or
status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE2[ô] and Datent Between #01/01/2009# and #01/12/2009#;
Select From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#) or
status = [ô]PENDENTE[ô] And cliente = [ô]CLIENTE2[ô] and Datent Between #01/09/2009# and #01/10/2009#;
Isso, considerado somente estes campos. Imagine que dá pra vc fazer muito mais, inclusive com consulta união.
Select From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#) or
(status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE2[ô] and Datent Between #01/01/2009# and #01/12/2009#);
Select From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#) or
(status = [ô]PENDENTE[ô] And cliente = [ô]CLIENTE2[ô] and Datent Between #01/09/2009# and #01/10/2009#);
Esqueci dos parênteses do segudo bloco!
(status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE2[ô] and Datent Between #01/01/2009# and #01/12/2009#);
Select From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#) or
(status = [ô]PENDENTE[ô] And cliente = [ô]CLIENTE2[ô] and Datent Between #01/09/2009# and #01/10/2009#);
Esqueci dos parênteses do segudo bloco!
vixe galera ta ajudando mto, vlw. so uma duvida, o comando between funciona se o campo venc da tabela for do formato texto ao invez date?
Bom,
Pode até ser que vc consiga se converter o valor do campo para date dentro da sql, mas não é uma boa prática e pode lhe trazer sérios problemas em termos de performance e credibilidade das informações.
Melhor trabalhar com o tipo certo e mais adequado para o campo.
Pode até ser que vc consiga se converter o valor do campo para date dentro da sql, mas não é uma boa prática e pode lhe trazer sérios problemas em termos de performance e credibilidade das informações.
Melhor trabalhar com o tipo certo e mais adequado para o campo.
converter os dados da tabela na consulta? pode? tipo:
Select From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#) or
(status = [ô]PENDENTE[ô] And cliente = [ô]CLIENTE2[ô] and [txt-color=#ff0000]date(Datent)[/txt-color] Between #01/09/2009# and #01/10/2009#);
Select From os Where (status = [ô]EM ABERTO[ô] And cliente = [ô]CLIENTE1[ô] and Datent Between #01/09/2009# and #01/10/2009#) or
(status = [ô]PENDENTE[ô] And cliente = [ô]CLIENTE2[ô] and [txt-color=#ff0000]date(Datent)[/txt-color] Between #01/09/2009# and #01/10/2009#);
Isso. Mas vc terá perda de performance e uma informação com grande perigo de lhe gerar problemas.
Tópico encerrado , respostas não são mais permitidas