w3resource

SQL Exercise: Using AND, OR operator with a specified condition

SQL Boolean Operator Statement: Exercise-6 with Solution.

From the following table, write a SQL query to find details of all orders excluding those with ord_date equal to '2012-09-10' and salesman_id higher than 5005 or purch_amt greater than 1000.Return ord_no, purch_amt, ord_date, customer_id and salesman_id.

Sample table : orders

ord_no      purch_amt   ord_date    customer_id  salesman_id
----------  ----------  ----------  -----------  -----------
70001       150.5       2012-10-05  3005         5002
70009       270.65      2012-09-10  3001         5005
70002       65.26       2012-10-05  3002         5001
70004       110.5       2012-08-17  3009         5003
70007       948.5       2012-09-10  3005         5002
70005       2400.6      2012-07-27  3007         5001
70008       5760        2012-09-10  3002         5001
70010       1983.43     2012-10-10  3004         5006
70003       2480.4      2012-10-10  3009         5003
70012       250.45      2012-06-27  3008         5002
70011       75.29       2012-08-17  3003         5007
70013       3045.6      2012-04-25  3002         5001

Sample Solution :

-- This query selects all columns from the 'orders' table.
SELECT *
-- Specifies the table from which to retrieve the data (in this case, 'orders').
FROM orders
-- Filters the rows to only include those where neither the conditions inside the parentheses are true.
WHERE NOT ((ord_date = '2012-09-10' AND salesman_id > 5005) OR purch_amt > 1000.00);

Output of the Query:

ord_no|purch_amt|ord_date  |customer_id|salesman_id|
------|---------|----------|-----------|-----------|
 70009|   270.65|2012-09-10|       3001|       5005|
 70002|    65.26|2012-10-05|       3002|       5001|
 70004|   110.50|2012-08-17|       3009|       5003|
 70011|    75.29|2012-08-17|       3003|       5007|
 70001|   150.50|2012-10-05|       3005|       5002|
 70007|   948.50|2012-09-10|       3005|       5002|
 70012|   250.45|2012-06-27|       3008|       5002|

Code Explanation:

The said SQL query that is selecting all columns (*) from the 'orders' table where NOT ( the value of the "ord_date" column is '2012-09-10' AND the value of the "salesman_id" column is greater than 5005 OR the value of the "purch_amt" column is greater than 1000.00) .
There will be a return of all rows from the 'orders' table that do not meet one of these conditions when this query is executed. It will return all the rows where ord_date is not '2012-09-10' or the salesman_id is less than or equal to 5005 or the purchase amount is less than or equal to 1000.

Relational Algebra Expression:

Relational Algebra Expression: Using AND, OR operator with a specified condition.

Relational Algebra Tree:

Relational Algebra Tree: Using AND, OR operator with a specified condition.

Explanation :

Syntax of display either those orders which is not issued on date 2012-09-10 and issued by the salesman whose ID is 505 and below or those orders which purchase amount is 1000.00 and below

Visual presentation:

Result of display either those orders which is not issued on date 2012-09-10 and issued by the salesman whose ID is 505 and below or those orders which purchase amount is 1000.00 and below

Practice Online


Query Visualization:

Duration:

Query visualization of Using AND, OR operator with a specified condition - Duration

Rows:

Query visualization of Using AND, OR operator with a specified condition - Rows

Cost:

Query visualization of Using AND, OR operator with a specified condition - Cost

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous SQL Exercise: Neither New York residents nor with a grade above 100.
Next SQL Exercise: Using AND operator with a specified condition.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.