More Complex Conditions:
Compound Conditions / Logical Operators
The AND operator
joins two or more conditions, and
displays a row only if that row's
data satisfies ALL conditions
listed (i.e. all conditions hold true).
For example, to display all staff
making over $40,000, use:
SELECT EMPLOYEEIDNO
FROM EMPLOYEESTATISTICSTABLE
WHERE SALARY > 40000 AND POSITION
= 'Staff';
The OR operator
joins two or more conditions, but
returns a row if ANY of the
conditions listed hold true. To see
all those who make less than $40,000
or have less than $10,000 in benefits,
listed together, use the following
query:
SELECT EMPLOYEEIDNO
FROM EMPLOYEESTATISTICSTABLE
WHERE SALARY < 40000 OR BENEFITS
< 10000;
AND & OR can be combined, for
example:
SELECT EMPLOYEEIDNO
FROM EMPLOYEESTATISTICSTABLE
WHERE POSITION = 'Manager' AND
SALARY > 60000 OR BENEFITS >
12000;
First, SQL finds
the rows where the salary is greater
than $60,000 and the position column
is equal to Manager, then taking this
new list of rows, SQL then sees if
any of these rows satisfies the previous
AND condition or the condition that
the Benefits column is greater than
$12,000. Subsequently, SQL only displays
this second new list of rows, keeping
in mind that anyone with Benefits
over $12,000 will be included as the
OR operator includes a row if either
resulting condition is True. Also
note that the AND operation is done
first.
To generalize this
process, SQL performs the AND operation(s)
to determine the rows where the AND
operation(s) hold true (remember:
all of the conditions are true), then
these results are used to compare
with the OR conditions, and only display
those remaining rows where any of
the conditions joined by the OR operator
hold true (where a condition or result
from an AND is paired with another
condition or AND result to use to
evaluate the OR, which evaluates to
true if either value is true). Mathematically,
SQL evaluates all of the conditions,
then evaluates the AND "pairs", and
then evaluates the OR's (where both
operators evaluate left to right).
To look at an example,
for a given row for which the DBMS
is evaluating the SQL statement Where
clause to determine whether to include
the row in the query result (the whole
Where clause evaluates to True), the
DBMS has evaluated all of the conditions,
and is ready to do the logical comparisons
on this result:
True AND False OR True AND True
OR False AND False
First simplify the AND pairs:
False OR True OR False
Now do the OR's, left to right:
True OR False
True
The result is True,
and the row passes the query conditions.
Be sure to see the next section on
NOT's, and the order of logical operations.
I hope that this section has helped
you understand AND's or OR's, as it's
a difficult subject to explain briefly.
To perform OR's before
AND's, like if you wanted to see a
list of employees making a large salary
($50,000) or have a large benefit
package ($10,000), and that happen
to be a manager, use parentheses:
SELECT EMPLOYEEIDNO
FROM EMPLOYEESTATISTICSTABLE
WHERE POSITION = 'Manager' AND
(SALARY > 50000 OR BENEFITS >
10000); |