Problema com banco de dados

pessoal, estou fazendo um sistema de arranchamento digital, ja esta cadastrando tudo corretamente, porem na hora de buscar e trazer os resultados, estou tendo um seguinte problema

select id from Refeicao where graduacao = 3 and dia1cafe = true
and mesatual1 = '31 de Janeiro’
OR mesatual2 = '31 de Janeiro’
OR mesatual3 = '31 de Janeiro’
OR mesatual4 = '31 de Janeiro’
OR mesatual5 = '31 de Janeiro’
OR mesatual6 = '31 de Janeiro’
OR mesatual7 = ‘31 de Janeiro’

porem, estou com um problema de logica aqui…
eu quero pegar o id de quem tem a graduacao = 3 e que tenha tbm o campo dia1cafe = true…até ai tudo bem, esta certinho…porem, quando ele passa em um desses mesatual com o valor ‘31 de Janeiro’, ele pega o obedece somente essa clausula, desobedecendo as duas anteriores, como se nao existissem.
Deve ser algum erro de lógica, mas nao estou conseguindo enchergar…Alguem poderia dar uma mao? Obrigado

Tenta fazer assim:

select id 
  from Refeicao 
 where graduacao = 3 
   and dia1cafe = true 
   and (mesatual1 = '31 de Janeiro'
     or mesatual2 = '31 de Janeiro'
     or mesatual3 = '31 de Janeiro'
     or mesatual4 = '31 de Janeiro'
     or mesatual5 = '31 de Janeiro'
     or mesatual6 = '31 de Janeiro'
     or mesatual7 = '31 de Janeiro')

beleza cara deu certinho, muito obrigado.

so um detalhe,
seu codigo deu errado pois voce misturou o and com or.

and so traz resultado se todos os and for satisfatorio.
como alguns não eram dava errado.