Ir para conteúdo

Arquivado

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

jrdesing

Select Union e And

Recommended Posts

Olá galera estou fazendo um consulta para aniversariantes em uma tabela onde tem a data de nascimento do titular e data de nascimento da esposa estou fazendo uma UNION ate ai beleza so que tem alguns campos que estão vazio pois não tinha a data de nascimento na ocasião



SELECT tbl_Clientes.strNome, tbl_Clientes.dtNascimento
FROM tbl_Clientes

UNION select tbl_Clientes.strNome_Fiador,tbl_Clientes.strData_Nasc_Fiador FROM tbl_Clientes
WHERE (((tbl_Clientes.dtNascimento)=True) AND ((tbl_Clientes.strData_Nasc_Fiador)=True));

o que esta acontecendo é a primeira where (((tbl_Clientes.dtNascimento)=True) ele não esta executando ele esta puxando os campos vazios também e se possível eu queria também fazer a busca uma semana antes de vencer a data de aniversario para poder enviar a correspondecia



Obrigado a todos pela ajuda!!!


Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT tbl_Clientes.strNome, tbl_Clientes.dtNascimento 
FROM tbl_Clientes 
where tbl_Clientes.dtNascimento is not null
UNION 
select tbl_Clientes.strNome_Fiador,tbl_Clientes.strData_Nasc_Fiador 
FROM tbl_Clientes 
WHERE  strData_Nasc_Fiador is not null

Para a comparação da data em si , use as functions de data e hora como MONTH , DAY , GETDATE etc.

http://technet.microsoft.com/en-us/library/aa258863(v=sql.80).aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal Motta funcionou certinho, quanto data o que eu estava querendo fazer parece simples e Data de hoje menos 7 dias ai a consulta vai me mostrando o que se encaixa nesta busca

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguns exemplos de calculos com data:

http://adjuniordba.wordpress.com/2014/01/30/calculo-simples-de-data/

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara.

 

Adicione uma condição no where contendo

 

and [data que quer comparar] >= getdate() - 7

 

ex: tbl_Clientes.dtNascimento >= getdate() -7 --clientes nascidos nos últimos 7 dias :P
ou
year(tbl_Clientes.dtNascimento) >= year(getdate() ) - 20 -- clientes nascidos nos últimos 20 anos

 

ps. isso funcionará caso o tipo do campo seja date, datetime ou varchar no formato yyyymmdd... caso seja varchar e esteja em um formato como

15/10/2014 ou 15.10.2014 você terá que converter o valor.

convert (datetime,'15/10/2014',103)
convert (datetime,'15.10.2014',103)
no caso
convert (datetime,tbl_Clientes.dtNascimento,103) >= getdate() -7
Abraço!

ah! antes que eu me esqueça! a diferença entre union e union all

 

o union elimina as duplicidades, então, caso tenha certeza de que seus selects retornarão linhas diferentes utilize o "union all" pois terá um ganho de performance (um ganho minimo... mas já é um ganho.)

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.