Ir para conteúdo

POWERED BY:

Arquivado

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

SinoP

Condição dentro do SELECT

Recommended Posts

Olá pessoal.

Estou com grandes dificuldades para criar uma condição no SELECT.

Preciso criar algo deste tipo:

 

SELECT * FROM newsletter WHERE (calcado>='39' and calcado<='42') and (nasc<='1987-01-01' and nasc>='1986-01-01') and email!=''

Preciso que me retorne os cadastros que tiverem nascido entre 01-01-1986 e 01-01-1987 e que calçam entre 39 e 42.

Simples?!?!?!?!

 

pra mim ta impossivel.... RSRSRSRSRS

 

 

Sei que isso não é possivel da maneira que postei... mas é para vocês terem bem a nocão do que preciso.

 

Fico no aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No campo email você não esta colocando NULL não? Pois se tiver registrando NULL, você precisa usar: email IS NOT NULL.

Quanto a parte da data, está OK. Mas um BETWEEN poderia deixar mais simplificado. e.g. nasc BETWEEN '1986-01-01' AND '1987-01-01'

E para o campo calcado, ele é numérico ou string? Pois se for string você terá problema na comparação, pois sendo string '3' é maior que '22'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta isso

 

SELECT * FROM NEWSLETTER WHERE CALCADO BETWEEN 39 AND 42 AND DATA BETWEEN CONVERT(DATETIME,'10/05/1986',103) AND CONVERT(DATETIME,'10/05/1987',103)

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT * FROM newsletter WHERE calcado between '39' and '42' and nasc between '1987-01-01' and '1986-01-01' and email is not null

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala moçada....

Muito obrigado mesmo pela força.

É o seguinte:

Usei a seguinte condição = SELECT * FROM newsletter WHERE calcado BETWEEN '39' AND '42' AND nasc BETWEEN '1986-01-01' AND '1987-01-01' and email IS NOT NULL

Como todos vocês me disseram, porém... tenho duas pessoas cadastradas no banco de dados.

Uma com "calcado" 39 e "nasc" 1987-10-01

Outro com "calcado" 42 e "nasc" 1986-10-01

Só que ao fazer o select que me passaram ele retorna apenas um valor.

Só me traz o que tem "calcado" 42 e "nasc" 1986-10-01

 

Foi então que percebi que havia algo errado nisso... fiz uma gambiarra e adivinhem... deu certo.

Acrescentei um ano ao '1987-01-01'

Ficou 1988-01-01

 

Ai sim ele me retornou os dois valores

 

Não sei como explicar... vou adicionar alguns dados no db e ver como a condição reage.

 

Muito obrigado a todos... já já eu posto o que ocorreu

 

[edit]

 

Galera... muito obrigado mesmo

funcionou perfeitamente como haviam me passado... só o que precisei foi inserir alguns dados no db e alterar a data de nasc.

eu estava usando apenas o ano vindo do db já o mes e o dia eu usava o 01-01 para pegar todos.

comecei usar todos os dados vindos do db e deu certo ano-mes-dia, ai funcionou como uma luva.

Estou usando isso para newsletter de uma loja de calçados.

 

Muito obrigado mesmo.

[/edit]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala moçada....

Muito obrigado mesmo pela força.

É o seguinte:

Usei a seguinte condição = SELECT * FROM newsletter WHERE calcado BETWEEN '39' AND '42' AND nasc BETWEEN '1986-01-01' AND '1987-01-01' and email IS NOT NULL

Como todos vocês me disseram, porém... tenho duas pessoas cadastradas no banco de dados.

Uma com "calcado" 39 e "nasc" 1987-10-01

Outro com "calcado" 42 e "nasc" 1986-10-01

Só que ao fazer o select que me passaram ele retorna apenas um valor.

Só me traz o que tem "calcado" 42 e "nasc" 1986-10-01

 

Foi então que percebi que havia algo errado nisso... fiz uma gambiarra e adivinhem... deu certo.

Acrescentei um ano ao '1987-01-01'

Ficou 1988-01-01

 

Ai sim ele me retornou os dois valores

 

Meu caro, isso é uma questão de lógica de programação. Por exemplo, quero listar número que estejam ENTRE 10 e 14. Quais seriam? 11, 12, 13. Foi o mesmo que aconteceu com a condição da data no seu SELECT. Bem, esse meu post não irá ajudar muito, foi só pra dar uma luz aí :D Té mais!

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.