How to use multiple AND clauses together

I am trying to use multiple and clauses together. I am not getting the desired results only the first and clause seems to run .

I would like ths statement to output data;

when bnum is greater than or  equal to 0.700 and br_name is >= 1 and/or  when m_num <= equal to 0.700 and/or br_name is >= 1, output  data when d_num is greater than or equal to 0.700 and/or br_name is >= 1 output  data.



select * 
from tmp_table
where 
     b_num <= 0.700 AND br_num >= 1
AND   m_num <= 0.700 AND br_num >= 1
AND   d_num <= 0.700 AND br_num >= 1
ORDER BY name;

Open in new window

DAN2011Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

johanntagleCommented:
Based on your description your where clause should be:

where (b_num <= 0.700 AND br_num >= 1)  /* because you said "bnum is greater than or  equal to 0.700 AND br_name is >= 1"*/
OR br_num >= 1
OR m_num <= 0.700
OR d_num <= 0.700
/*then for the rest you said "AND/OR", which translates to an OR*/

Open in new window


Please clarify.  Thanks.
0
DAN2011Author Commented:
I know its confusing. I am trying to check to see if all three conditions exist. For example in plain english if

b_num is greater than or equal to 7 and br_num is greater than 1 output this data,  if d_num is also greater than or equal to 7 and br_num is greater than 1 output this data as well and if m_num is greater than or equal to 7 and br_num is greater than 1 output this data.
0
QlemoBatchelor, Developer and EE Topic AdvisorCommented:
As you are describing it, the main requirement is "br_num >= 1", and any of the other conditions. However, what you described is rather blurry. I would decode it as
select * from tmp_table
where br_num >= 1 and d_num <= 0.700)
   and (b_num <= 0.700 OR m_num <= 0.700)
ORDER BY name;

Open in new window

0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

QlemoBatchelor, Developer and EE Topic AdvisorCommented:
After http:#a36532778 you really want to have EITHER condition to apply. That is
select * from tmp_table
where br_num >= 1 
   and (b_num <= 0.700 OR m_num <= 0.700 or d_num <= 0.700)
ORDER BY name;

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
DAN2011Author Commented:
I think this is more of what I am trying to do, but now the br_num >=1 is not working
select * 
from table
where br_num >= 1 
AND (b_num <= 0.700 OR m_num <= 0.700 OR d_num <= 0.700 OR n_num <= 0.700)
OR (m_num <= 0.700 OR b_num <= 0.700 OR d_num <= 0.700 OR n_num <= 0.700) 
OR (d_num <= 0.700 OR m_num <= 0.700 OR b_num <= 0.700 OR wtd_market_index <= 0.700)
OR (n_num<= 0.700 OR d_num <= 0.700 OR m_num <= 0.700 OR b_num <= 0.700)
ORDER BY name;

Open in new window

0
QlemoBatchelor, Developer and EE Topic AdvisorCommented:
(b_num <= 0.700 OR m_num <= 0.700 OR d_num <= 0.700 OR n_num <= 0.700)
OR (m_num <= 0.700 OR b_num <= 0.700 OR d_num <= 0.700 OR n_num <= 0.700) 

Open in new window

is exactly the same as
(b_num <= 0.700 OR m_num <= 0.700 OR d_num <= 0.700 OR n_num <= 0.700)

Open in new window

so your conditions do not make sense. In addition, br_num >= 1 needs only to apply for the very first conditional expression, because of the AND; any other condition needs to be true with no respect to br_num, as you wrote it. AND has precedence over OR, so
    a AND b OR c     is in fact   (a AND b) OR C
Because of several algebraic rules (distributive and associative law)
    a OR (b OR c OR d)    is the same as   a OR b OR c OR d
and
   (a AND b) OR (a AND c)   is the same as   a AND (b OR c)

If you think of OR like + and AND like *, common arithmetic applies, and it is easier to transform.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Databases

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.