Solved

How to use multiple AND clauses together

Posted on 2011-09-13
6
320 Views
Last Modified: 2012-06-21
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

0
Comment
Question by:DAN2011
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 24

Assisted Solution

by:johanntagle
johanntagle earned 100 total points
ID: 36532687
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
 

Author Comment

by:DAN2011
ID: 36532778
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
 
LVL 69

Expert Comment

by:Qlemo
ID: 36532795
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
Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

 
LVL 69

Accepted Solution

by:
Qlemo earned 400 total points
ID: 36532810
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
 

Author Comment

by:DAN2011
ID: 36532939
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
 
LVL 69

Expert Comment

by:Qlemo
ID: 36532992
(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

Featured Post

The Eight Noble Truths of Backup and Recovery

How can IT departments tackle the challenges of a Big Data world? This white paper provides a roadmap to success and helps companies ensure that all their data is safe and secure, no matter if it resides on-premise with physical or virtual machines or in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
A company’s centralized system that manages user data, security, and distributed resources is often a focus of criminal attention. Active Directory (AD) is no exception. In truth, it’s even more likely to be targeted due to the number of companies …
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question