Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 SQL - Select Join / Outer Join Sub queries. 2 1. Join Join Outer join Left outer join Right outer join.

Similar presentations


Presentation on theme: "1 SQL - Select Join / Outer Join Sub queries. 2 1. Join Join Outer join Left outer join Right outer join."— Presentation transcript:

1 1 SQL - Select Join / Outer Join Sub queries

2 2 1. Join Join Outer join Left outer join Right outer join

3 3 1.1 Join List customer ACME’s orders record in January Select * from customers where cname = ‘ACME’ Select * from orders where cid = ‘c001’ and month = ‘jan’ select o.* from customers c, orders o where c.cid = o.cid and cname = 'ACME' and month = 'jan'

4 4 1.1 Join (cont) List the names of all customers who have bought comb Select pid from products where pname = ‘comb’ Select cid from orders where pid = ‘p01’ Select cname from customers where cid = …. Select cname from customers c, orders o, products p where p.pid = o.pid and c.cid = o.cid and p.pname = ‘comb’

5 5 1.1 Join (cont) List the names of all customers who have bought comb Select distinct cname from customers c, orders o, products p where p.pid = o.pid and c.cid = o.cid and p.pname = 'comb'

6 6 1.1 Join (cont) List all customer pairs who live in the same city Select c1.cid, c2.cid from customers c1, customers c2 where c1.city = c2.city and c1.cid != c2.cid Select c1.cid, c2.cid from customers c1, customers c2 where c1.city = c2.city and c1.cid < c2.cid

7 7 1.1 Join (cont) List all the product names that have been ordered by at least two customers. select distinct p.pname, o1.pid from orders o1, orders o2, products p where o1.pid = p.pid and o1.pid = o2.pid and o1.cid < o2.cid

8 8 1.1 Join (cont) List the agent names and their total sale amount (orders.dollars). select aname, sum(dollars) total_sales from agents a, orders o where a.aid = o.aid group by a.aid, a.aname

9 9 1.2 Outer join AB1B2 a1b1 R lxl S C c1 a1b1 c2 a2b1b2c3 AB1B2 a1b1 a1b2b1 a2b1b2 B1B2C b1 c1 b1 c2 b1b2c3 b2 c4 R S AB1B2 a1b1 R lxlo S C c1 a1b1 c2 a2b1b2c3 a1b2b1null b2 c4

10 10 1.2 Outer Join (cont) Modification to CAPS database. 1. Add two more records insert agents values ('a07', 'Tony', 'Boston', 8); insert orders values (1030, 'mar', 'c006', 'a08', 'p01', 800, 400.00); 2. Create a new table “Sales” create table Sales (aid char(3) not null, total money ); 3. Load data into table “Sales” Insert into Sales select aid, sum(dollars) from orders group by aid

11 11 1.2 Outer Join (cont) Join (inner join) select aname, aid, total from sales s join agents a on s.aid = a.aid Select aname, a.aid, total from sales s join agents a on s.aid = a.aid

12 12 1.2 Outer Join (cont) Outer Join select aname, a.aid, total from sales s full outer join agents a on s.aid = a.aid

13 13 1.3 Left outer join AB1B2 a1b1 a1b2b1 a2b1b2 B1B2C b1 c1 b1 c2 b1b2c3 b2 c4 R S AB1B2 a1b1 R left outer join S C c1 a1b1 c2 a2b1b2c3 a1b2b1null

14 14 1.3 Left outer Join (cont) Left outer Join: List name, aid and total sale record of agents who have sale records in the sales table. select aname, a.aid, total from sales s left outer join agents a on s.aid = a.aid

15 15 1.4 Right outer join AB1B2 a1b1 a1b2b1 a2b1b2 B1B2C b1 c1 b1 c2 b1b2c3 b2 c4 R S AB1B2 a1b1 R right outer join S C c1 a1b1 c2 a2b1b2c3 nullb2 c4

16 16 1.4 Right outer Join (cont) Right outer Join: List name, aid and total sale record of agents who have records in the agents table. select aname, a.aid, total from sales s left outer join agents a on s.aid = a.aid

17 17 2.1 Sub queries List cid values of customers who place orders with agent in Dallas Select aid from agents where city = 'Dallas‘ Select distinct cid from orders where aid in (select aid from agents where city = 'Dallas')

18 18 2.1 Sub queries (cont) List the names and discounts of all customers who place order through agents in Dallas Select aid from agents where city = 'Dallas‘ Select distinct cid from orders where aid in (select aid from agents where city = 'Dallas') Select cname, discount from customers where cid in (select distinct cid from orders where aid in (select aid from agents where city = 'Dallas'))

19 19 2.1 Sub queries (cont) List the names of customers who order product p05. Select distinct cname from customers where cid in (select distinct cid from orders where pid = 'p05') Select distinct cname from customers where 'p05' in (select pid from orders where cid = customers.cid) Uncorrelated subquery Correlated subquery

20 20 2.1 Sub queries (cont) List the names of customers who do not order product p05. Select distinct cname from customers where cid in (select distinct cid from orders where pid != 'p05') Select distinct cname from customers where cid not in (select distinct cid from orders where pid = 'p05')

21 21 2.2 Sub queries – other key words Some\ any \ all Exists

22 22 2.2 Sub queries – other key words (cont) Find agents (aid) with a minimum commission. Select aid from agents where percentage <= all (select percentage from agents) Select aid from agents where percentage = (select min(percentage) from agents)

23 23 2.2 Sub queries – other key words (cont) Find agents (aid) with a minimum commission. Select aid from agents where percentage <= any (select percentage from agents) Select aid from agents where percentage <= some (select percentage from agents)

24 24 2.2 Sub queries – other key words (cont) Find all customers (cid and cname) who have the same discount as that of any of the customers in Dallas Select cid, cname from customers where discnt = some (select discnt from customers where city = 'Dallas') Select cid, cname from customers where discnt = any (select discnt from customers where city = 'Dallas')

25 25 2.2 Sub queries – other key words (cont) Find all customer names where the customers places an order through agent a05 Select distinct cname from customers where cid in (select cid from orders where aid = 'a05') Select distinct c.cname from customers c, orders o where c.cid = o.cid and o.aid = 'a05' Select distinct c.cname from customers c where exists (select * from orders o where c.cid = o.cid and o.aid = 'a05') Select distinct c.cname from customers c join orders o on c.cid = o.cid and o.aid = 'a05'


Download ppt "1 SQL - Select Join / Outer Join Sub queries. 2 1. Join Join Outer join Left outer join Right outer join."

Similar presentations


Ads by Google