0% found this document useful (0 votes)
12 views

Ch8_Joins and Set Operations

Y

Uploaded by

ishan4080
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

Ch8_Joins and Set Operations

Y

Uploaded by

ishan4080
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Table Joins in SQL

Fetching data from multiple tables


Fetching data in faster way
Joining
A join is a query that combines rows from two of
more tables. In JOIN query more than one table
are listed in FROM clause. MySQL provides
various type of Joining :

1) CROSS JOIN or CARTESIAN PRODUCT


2) EQUI-JOIN
3) NATURAL JOIN
Cross Join (Cartesian product)
• It return all possible concatenation of all rows
from both table i.e. one row of First table is
joined with all the rows of second table.
• Cartesian product join each row of one table
with each row of another table. So if –
• First table have 6 rows and second table have 4 rows
then total number of rows in output will be 6 x 4 = 24.
• i.e. Total Number of Rows after Cartesian
product(Cardinality) = Cardinality of First Table X
Cardinality of Second Table
Cross Join (Cartesian product)

• Suppose I want a combination of all colors with all


shades. In this case Cartesian product or cross join is
used.
• For Example
▫ Select * from Shades,Color
• Output will contain 9 rows i.e. no. of rows in first
table x no. of rows in second table
Cross Join (Cartesian product)
Cross Join (Cartesian product)
Equi-join
• The join in which columns are compared for
equality is called Equi-Join. A non-equi join
specifies condition with non-equality operator.
In equi-join we put(*) in the select list therefore
the common column will appear twice in the
output.
• To understand the output, lets take 2 table one
for employee (contains employee detail with
deptno) and another for department contains
deptno and other department details.
Equi-join

Now we want to
fetch details of
employee along
with its
corresponding
matching
department. Like
for ‘alam’ deptno
is 10 so from dept
table it should
show deptno 10
details and so on
Equi-join
Common
Column
appears
twice in
output

From the above query, we can observe that while doing equi-join we have to give
equality condition on common column of both table so that it picks related
records
Equi-join
We can also give Table Alias i.e. nick name for table name and further we can use
this name any where in query in place of table name. This is helpful when table
name is of big length and we can shorten the query
Natural Join
• The JOIN in which only one of the identical
columns exists in called Natural Join. It is
similar to Equi-join except that duplicate
columns are eliminated in Natural join that
would otherwise appear in Equi-Join.
• In natural join we specify the names of column
to fetch in place of (*) which is responsible of
appearing common column twice in output.
See here, we are not giving
*, like
fetch

Natural Join
Natural Join

The reason of this error is – the


deptno exists in both the table, so in To resolve this error,
this case if we are selecting or using just qualify the
only deptno then it becomes common column by
ambiguous table name as
from which table this TableName.column
deptno will be selected
name
Natural Join
Additional condition in joins
Joining Tables using JOIN clause of
SQL SELECT
• Till now we have performed joining using
traditional SQL method which is common to
most of the RDBMS software now we will learn
MySQL style of joining using JOIN clause
• MySQL support various options with JOIN
▫ CROSS
▫ NATURAL
▫ ON
▫ USING
Cartesian product using JOIN
• Select * from shades JOIN color;

• Or

• Select * from shades CROSS JOIN color;


Equi – Join using JOIN
• Select * from emp JOIN dept ON emp.deptno =
dept.deptno;
• Select * from emp JOIN dept ON emp.deptno =
dept.deptno where salary>50000;

Natural – Join using JOIN


• Select * from emp NATURAL JOIN dept
In NATURAL JOIN condition the join condition is not required it automatically
joins based on the common column value
LEFT JOIN
• When using LEFT JOIN all rows from first table
i.e. left hand side table will be returned whether
there are matches in second table or not. For the
rows whose matching values are not found in
second table it will display NULL value.
Suppose we want to Select Empno, Name and Pname from both table, and we
want all the employee record must come whether employee is working on a
project or not.

All empno are


coming from
first table

For empno 5 no
matching data in
second table so NULL
will be output
RIGHTJOIN
• When using RIGHT JOIN all rows from second
table i.e. right hand side table will be returned
whether there are matches in first table or not.
For the rows whose matching values are not
found in first table it will display NULL value.
Suppose we want to Select pid, pname and ename from both table, and we want
all the employee name record must come whether employee is working on a
project or not.

You might also like