Ir para conteúdo

POWERED BY:

Arquivado

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

asteriskman

Select com BETWEEN AND e OR

Recommended Posts

Boa noite senhores,

è meu primeiro post aqui no forúm e estou começando a mexer com mysql.

Tenho uma dúvida.

 

Gostaria de gazer este select

 

SELECT * FROM asteriskcdrdb.cdr where calldate BETWEEN '2016-01-29 17:56:19' AND '2016-03-08 17:30:40' and src in(200,201,203) or dst in(200,201,203)

 

 

ou seja quero trazer os valores referente src ou dst que tenham os valores 200,201,203 e que estejam dentro do range do calldate

 

SRC e DST nãotem que ser iguais , basta que existe esses números em um dos campos.

Eu já fasso isso com o seguinte select

 

Select * from asteriskcdrdb.asterisk where src in(200,201,203) or dst(200,201,203)

 

quero verificar agora com o range do calldate porém do jeito que eu fiz

SELECT * FROM asteriskcdrdb.cdr where calldate BETWEEN '2016-01-29 17:56:19' AND '2016-03-08 17:30:40' and src in(200,201,203) or dst in(200,201,203)

não está funcionando =(((

 

alguém pode me dar uma força ?

 

 

vlw Clãaaa

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando usar OR , use parenteses

SELECT * 
FROM asteriskcdrdb.cdr 
where ( (calldate BETWEEN '2016-01-29 17:56:19' AND '2016-03-08 17:30:40') 
            and 
           (src in(200,201,203) or dst in(200,201,203)) )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Programação é matemática, respeite a ordem de importância é a seguinte: (valores dentro de parênteses), * multiplicação e / divisão, + soma e - subtração.

 

 

Entenda que o AND funciona como multiplicação e o OR como soma.

 

 

Se quiser buscar uma data e um valor específico, usa a multiplicação no WHERE, "campo_data = x * (AND) campo_categoria = y", o banco de dados entende que deve retornar todas as linhas onde campo_data e campo_categoria iguais aos especificados.

 

Quando quiser buscar dois valores específicos, usa a soma no WHERE, "campo_categoria = y + campo_categoria = z", o banco de dados entende que deve retornar todas as linhas onde o campo_categoria seja igual a uma das duas condições.

 

 

Agora calculemos x * y + z. O resultado é todos os registros onde campo_categoria = y onde campo_data = x além dos registros onde campo_categoria = z. O mesmo resultado de ( x * y ) + z.

 

Mas, se calcularmos x * ( y + z ). O resultado é todos os registros onde campo_categoria = x ou y (na matemática, { x , y }) onde campo_data = x nas duas categorias.

 

 

Me empolguei na resposta, kkk. Consegui ajudar?

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.