SinoP 0 Denunciar post Postado Agosto 28, 2009 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
Eclesiastes 2 Denunciar post Postado Agosto 28, 2009 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
Dee 0 Denunciar post Postado Agosto 29, 2009 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
giesta 29 Denunciar post Postado Agosto 30, 2009 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
SinoP 0 Denunciar post Postado Agosto 31, 2009 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
Eliseu M. 2 Denunciar post Postado Setembro 1, 2009 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
klawdyo 0 Denunciar post Postado Setembro 24, 2009 Se você procura até 01/01/1987, não tem como retornar 10/01/1987. Compartilhar este post Link para o post Compartilhar em outros sites