Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
16 views35 pages

Chapter 4

Uploaded by

Rahul Bhole
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views35 pages

Chapter 4

Uploaded by

Rahul Bhole
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 35

Subquerying with

semi joins and anti


joins
JOINING DATA IN SQL

Maham Faisal Khan


Senior Content Developer, DataCamp
Calling all joins
Diagram for an INNER JOIN on the id field

JOINING DATA IN SQL


Additive joins
SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;

JOINING DATA IN SQL


Additive joins

JOINING DATA IN SQL


Semi join
A semi join chooses records in the first table where a condition is met in the second table.

JOINING DATA IN SQL


Semi join

JOINING DATA IN SQL


Semi join

JOINING DATA IN SQL


Kicking off our semi join
SELECT country, continent, president
FROM presidents;

| country | continent | president |


| -------- | ------------- | ----------------------- |
| Egypt | Africa | Abdel Fattah el-Sisi |
| Portugal | Europe | Marcelo Rebelo de Sousa |
| USA | North America | Joe Biden |
| Uruguay | South America | Luis Lacalle Pou |
| Pakistan | Asia | Asif Ali Zardari |
| Chile | South America | Gabriel Boric |
| India | Asia | Droupadi Murmu |

JOINING DATA IN SQL


Building on our semi join
SELECT country
FROM states
WHERE indep_year < 1800;

|----------|
| country |
|----------|
| Portugal |
| Spain |
|----------|

JOINING DATA IN SQL


Finish the semi join (an intro to subqueries)
SELECT president, country, continent
FROM presidents
WHERE country IN
(SELECT country
FROM states
WHERE indep_year < 1800);

|------------------------- |-----------|------------- |
| president | country | continent |
|------------------------- |-----------|------------- |
| Marcelo Rebelo de Sousa | Portugal | Europe |
|------------------------- |-----------|------------- |

JOINING DATA IN SQL


Anti join

JOINING DATA IN SQL


Anti join

JOINING DATA IN SQL


An anti join with the presidents
SELECT country, president | country | president | |
FROM presidents -------- | ---------------- | |
WHERE continent LIKE '%America' Uruguay | Luis Lacalle Pou | |
AND country NOT IN Chile | Gabriel Boric |
(SELECT country
FROM states
WHERE indep_year < 1800);
JOINING DATA IN SQL
Let's practice!
JOINING DATA IN SQL
Subqueries inside
WHERE and SELECT
JOINING DATA IN SQL

Maham Faisal Khan


Senior Content Developer, DataCamp
Syntax for subqueries inside WHERE
All semi joins and anti joins we have seen included a subequery in WHERE
WHERE is the most common place for subqueries

Syntax for query using WHERE IN statement


SELECT *
FROM some_table
WHERE some_numeric_field IN (4, 8, 12);

JOINING DATA IN SQL


Syntax for subqueries inside WHERE
SELECT *
FROM some_table
WHERE some_field IN
(include subquery here);

JOINING DATA IN SQL


Syntax for subqueries inside WHERE
SELECT *
FROM some_table
WHERE some_field IN
(SELECT some_numeric_field
FROM another_table
WHERE field2 = some_condition);

JOINING DATA IN SQL


Subqueries inside SELECT
SELECT DISTINCT continent
FROM states;

|---------------|
| continent |
|---------------|
| Africa |
| Asia |
| Europe |
| North America |
| Oceania |
|---------------|

JOINING DATA IN SQL


Subqueries inside SELECT
SELECT DISTINCT continent,
(SELECT COUNT(*)
FROM monarchs
WHERE states.continent = monarch.continent) AS
monarch_count FROM states;

| continent | monarch_count |
|--------------- |----------------- |
| Africa | 0|
| Asia | 2|
| Europe | 2|
| North America | 0|
| Oceania | 0|

JOINING DATA IN SQL


Let's practice!
JOINING DATA IN SQL
Subqueries inside
FROM
JOINING DATA IN SQL

Maham Faisal Khan


Senior Content Developer, DataCamp
Subqueries inside FROM
SELECT continent, MAX(indep_year) AS most_recent
FROM states
GROUP BY continent;

| continent | most_recent |
| -------------- | ------------- |
| Asia | 1984 |
| Europe | 1814 |
| Oceania | 1901 |
| North America | 1776 |
| South America | 1818 |

JOINING DATA IN SQL


Focusing on records inside monarchs
SELECT left_table.id, left_val SELECT DISTINCT left_table.id, left_val
FROM left_table, right_table FROM left_table, right_table
WHERE left_table.id = right_table.id WHERE left_table.id = right_table.id
JOINING DATA IN SQL
Finishing off the subquery
-- Query to return continents with monarchs and the year the most recent country gained independence
SELECT DISTINCT monarchs.continent, sub.most_recent
FROM monarchs,
(SELECT
continent,
MAX(indep_year) AS most_recent
FROM states
GROUP BY continent) AS sub
WHERE monarchs.continent = sub.continent
ORDER BY continent;

| continent | most_recent |
|-------------|-------------- |
| Asia | 1984 |
| Europe | 1814 |

JOINING DATA IN SQL


Let's practice!
JOINING DATA IN SQL
The finish line
JOINING DATA IN SQL

Maham Faisal Khan


Senior Content Developer, DataCamp
Types of joins
1. INNER JOIN , or just JOIN
2. Outer join
LEFT JOIN

RIGHT JOIN

FULL JOIN

3. CROSS JOIN
4. Semi join / anti join
5. Self join

JOINING DATA IN SQL


Set operations

JOINING DATA IN SQL


Types of basic subqueries
Subqueries inside SELECT clauses

Subqueries inside WHERE clauses


Subqueries inside FROM clauses
JOINING DATA IN SQL
WHERE to from here?
DataCamp's Intermediate SQL course
Projects, practice exercises and competitions
Workspace

JOINING DATA IN SQL


The finish line!
JOINING DATA IN SQL

You might also like