joinsjoins in sql the standard join in sql is sometimes called an inner join •each row in the...
TRANSCRIPT
![Page 1: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/1.jpg)
CSE 344JANUARY 10TH –JOINS
![Page 2: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/2.jpg)
ADMINISTRATIVE MINUTIAE• HW1 out
• Piazza post for getting the correct upstream assignments
• Online Quiz posted• 6 questions (SQL)
• Both due WED Jan 17• OH locations posted• Posting lectures before
![Page 3: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/3.jpg)
ADMINISTRATIVE MINUTIAE• Office hours
• Jayanth: Mon 11-12, CSE 220• Colin: Wed 2-3, 5th floor breakout• Allison: Mon 1-2, CSE 025• Cindy: Tue 2-3, CSE 023• James: Tue 10-11, CSE 220• Jonathan: Tue 4-5, CSE 023• Joshua : Tue 1-2, CSE 023
![Page 4: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/4.jpg)
RELATIONAL MODELData is a collection of relations / tables:
mathematically, relation is a set of tuples• each tuple (or entry) must have a value for each attribute• order of the rows is unspecified
What is the schema for this table? Company(cname, country, no_employees, for_profit)
cname country no_employees for_profitGizmoWorks USA 20000 TrueCanon Japan 50000 TrueHitachi Japan 30000 TrueHappyCam Canada 500 False
columns /attributes / fields
rows / tuples / records
![Page 5: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/5.jpg)
KEYSKey = one (or multiple) attributes that uniquely identify a record
cname country no_employees for_profitGizmoWorks USA 20000 TrueCanon Japan 50000 TrueHitachi Japan 30000 TrueHappyCam Canada 500 False
Key Not a key Is this a key?No: future updates to thedatabase may create duplicateno_employees
![Page 6: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/6.jpg)
MULTI-ATTRIBUTE KEY
fName lName Income DepartmentAlice Smith 20000 TestingAlice Thompson 50000 TestingBob Thompson 30000 SWCarol Smith 50000 Testing
Key = fName,lName(what does this mean?)
![Page 7: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/7.jpg)
MULTIPLE KEYS
SSN fName lName Income Department111-22-3333 Alice Smith 20000 Testing222-33-4444 Alice Thompson 50000 Testing333-44-5555 Bob Thompson 30000 SW444-55-6666 Carol Smith 50000 Testing
Key Another key
We can choose one key and designate it as primary keyE.g.: primary key = SSN
![Page 8: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/8.jpg)
FOREIGN KEY
cname country no_employees for_profitCanon Japan 50000 YHitachi Japan 30000 Y
name populationUSA 320MJapan 127M
Company(cname, country, no_employees, for_profit)Country(name, population)
Foreign key toCountry.nameCompany
Country
![Page 9: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/9.jpg)
KEYS: SUMMARYKey = columns that uniquely identify tuple
• Usually we underline• A relation can have many keys, but only one can be chosen as
primary keyForeign key:
• Attribute(s) whose value is a key of a record in some other relation• Foreign keys are sometimes called semantic pointer
![Page 10: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/10.jpg)
DEMO 1• Common Syntax
• CREATE TABLE [tablename] ([att1] [type1], [att2] [type2]…);
• INSERT INTO [tablename] VALUES ([val1],[val2]…);• SELECT [att1],[att2],… FROM [tablename]
WHERE [condition]• DELETE FROM [tablename]
WHERE [condition]
![Page 11: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/11.jpg)
DEMO 2• Two other operations we want to support
• ALTER TABLE: Adds a new attribute to the table• UPDATE: Change the attribute for a particular tuple in the
table.• Common Syntax
• ALTER TABLE [tablename] ADD [attname] [atttype]• UPDATE [tablename] SET [attname]=[value]
WHERE [condition]
![Page 12: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/12.jpg)
DISCUSSIONTables are NOT ordered
• they are sets or multisets (bags)Tables are FLAT
• No nested attributesTables DO NOT prescribe how they are implemented / stored on disk
• This is called physical data independence
![Page 13: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/13.jpg)
DISCUSSION• Tables may not be ordered, but data can be returned in an
order with the ORDER BY modifier• ORDER BY [attname] [DESC/ASC]• Supports sorting by multiple variables
![Page 14: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/14.jpg)
DISCUSSION• Tables may not be ordered, but data can be returned in an
order with the ORDER BY modifier• Whew, today’s been a lot of coding... I know what you’re
thinking…
![Page 15: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/15.jpg)
THEORY BREAK
![Page 16: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/16.jpg)
THEORY BREAK• We can think of accessing information through queries as
some combination of functions
![Page 17: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/17.jpg)
THEORY BREAK• We can think of accessing information through queries as
some combination of functions• Consider a table of UW students (with all relevant info):
![Page 18: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/18.jpg)
THEORY BREAK• We can think of accessing information through queries as
some combination of functions• Consider a table of UW students (with all relevant info):
• How would we need to get the birth year of all UWBW students from California?
![Page 19: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/19.jpg)
THEORY BREAK• We can think of accessing information through queries as
some combination of functions• Consider a table of UW students (with all relevant info):
• How would we need to get the birth year of all UWBW students from California?
• Think of the file as a set of tuples
![Page 20: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/20.jpg)
THEORY BREAK• We can think of accessing information through queries as
some combination of functions• Consider a table of UW students (with all relevant info):
• How would we need to get the birth year of all UWBW students from California?
• Think of the file as a set of tuples• Find the set of UWBW students and the set of students from
California; Find the intersection of these sets, return just the year from the birthday values of this set
![Page 21: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/21.jpg)
THEORY BREAK• We can think of accessing information through queries as
some combination of functions• Consider a table of UW students (with all relevant info):
• How would we need to get the birth year of all UWBW students from California?
• Think of the file as a set of tuples• Find the set of UWBW students and the set of students from
California; Find the intersection of these sets, return just the year from the birthday values of this set
• What does this return?
![Page 22: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/22.jpg)
THEORY BREAK• We can think of accessing information through queries as
some combination of functions• Consider a table of UW students (with all relevant info):
• How would we need to get the birth year of all UWBW students from California?
• Think of the file as a set of tuples• Find the set of UWBW students and the set of students from
California; Find the intersection of these sets, return just the year from the birthday values of this set
• What does this return?• Years, but with many duplicates. Even though sets don’t allow
duplicates, the objects are unique.
![Page 23: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/23.jpg)
THEORY BREAK• If we only want to return unique elements, we can use the
DISTINCT modifier• Even if we hide some attributes from the output, the data is all
still there.• When we select a subset of the attributes, this function is
called a projection
![Page 24: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/24.jpg)
THEORY BREAK• This was all for a single table.• Data models specify how our data are stored
and how the data are related• Need to utilize these relations, or the database
was pointless• This involves a JOIN
![Page 25: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/25.jpg)
JOIN: INTRO• The JOIN is the way we indicate in a query how
multiple tables are related.• Example, if we want all of the products and their
relevant company information, we need to join those two tables.
• The result of the join is all of the relevant information from both tables
• Join occurs based on the join condition.• This allows us to access information that comes
from multiple tables
![Page 26: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/26.jpg)
JOINS IN SQL
Retrieve all Japanese products that cost < $150
Product(pname, price, category, manufacturer)Company(cname, country)
pname price category manufacturerMultiTouch 199.99 gadget CanonSingleTouch 49.99 photography CanonGizom 50 gadget GizmoWorksSuperGizmo 250.00 gadget GizmoWorks
cname countryGizmoWorks USACanon JapanHitachi Japan
![Page 27: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/27.jpg)
JOINS IN SQL
Retrieve all Japanese products that cost < $150
Product(pname, price, category, manufacturer)Company(cname, country)
SELECT pname, priceFROM Product, CompanyWHERE ...
pname price category manufacturerMultiTouch 199.99 gadget CanonSingleTouch 49.99 photography CanonGizom 50 gadget GizmoWorksSuperGizmo 250.00 gadget GizmoWorks
cname countryGizmoWorks USACanon JapanHitachi Japan
![Page 28: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/28.jpg)
JOINS IN SQL
Retrieve all Japanese products that cost < $150
Product(pname, price, category, manufacturer)Company(cname, country)
SELECT pname, priceFROM Product, CompanyWHERE manufacturer=cname AND
country='Japan' AND price < 150
pname price category manufacturerMultiTouch 199.99 gadget CanonSingleTouch 49.99 photography CanonGizom 50 gadget GizmoWorksSuperGizmo 250.00 gadget GizmoWorks
cname countryGizmoWorks USACanon JapanHitachi Japan
![Page 29: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/29.jpg)
JOINS IN SQL
Product(pname, price, category, manufacturer)Company(cname, country)
Retrieve all USA companies that manufacture “gadget” products
pname price category manufacturerMultiTouch 199.99 gadget CanonSingleTouch 49.99 photography CanonGizom 50 gadget GizmoWorksSuperGizmo 250.00 gadget GizmoWorks
cname countryGizmoWorks USACanon JapanHitachi Japan
![Page 30: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/30.jpg)
JOINS IN SQL
Product(pname, price, category, manufacturer)Company(cname, country)
pname price category manufacturerMultiTouch 199.99 gadget CanonSingleTouch 49.99 photography CanonGizom 50 gadget GizmoWorksSuperGizmo 250.00 gadget GizmoWorks
cname countryGizmoWorks USACanon JapanHitachi Japan
Retrieve all USA companies that manufacture “gadget” products
SELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname
WhyDISTINCT?
![Page 31: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/31.jpg)
JOINS IN SQLThe standard join in SQL is sometimes called an inner join
• Each row in the result must come from both tables in the join
Sometimes we want to include rows from only one of the two table: outer join
![Page 32: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/32.jpg)
INNER JOINEmployeeid name1 Joe2 Jack3 Jill
SalesemployeeID productID1 3441 3552 544
Retrieve employees and their sales
Employee(id, name)Sales(employeeID, productID)
![Page 33: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/33.jpg)
INNER JOINEmployeeid name1 Joe2 Jack3 Jill
SalesemployeeID productID1 3441 3552 544
Retrieve employees and their sales
SELECT *FROM Employee E, Sales S WHERE E.id = S.employeeID
Employee(id, name)Sales(employeeID, productID)
![Page 34: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/34.jpg)
INNER JOINEmployeeid name1 Joe2 Jack3 Jill
SalesemployeeID productID1 3441 3552 544
Retrieve employees and their sales
SELECT *FROM Employee E, Sales S WHERE E.id = S.employeeID
Employee(id, name)Sales(employeeID, productID)
id name empolyeeID productID1 Joe 1 3441 Joe 1 3552 Jack 2 544
![Page 35: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/35.jpg)
INNER JOINEmployeeid name1 Joe2 Jack3 Jill
SalesemployeeID productID1 3441 3552 544
Retrieve employees and their sales
SELECT *FROM Employee E, Sales S WHERE E.id = S.employeeID
Employee(id, name)Sales(employeeID, productID)
id name empolyeeID productID1 Joe 1 3441 Joe 1 3552 Jack 2 544
Jill ismissing
![Page 36: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/36.jpg)
INNER JOINEmployeeid name1 Joe2 Jack3 Jill
SalesemployeeID productID1 3441 3552 544
Retrieve employees and their sales
SELECT *FROM Employee E
INNER JOINSales S
ON E.id = S.employeeID
Employee(id, name)Sales(employeeID, productID)
id name empolyeeID productID1 Joe 1 3441 Joe 1 3552 Jack 2 544
Jill ismissing
Alternativesyntax
![Page 37: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/37.jpg)
OUTER JOINEmployeeid name1 Joe2 Jack3 Jill
SalesemployeeID productID1 3441 3552 544
Retrieve employees and their sales
SELECT *FROM Employee E
LEFT OUTER JOINSales S
ON E.id = S.employeeID
Employee(id, name)Sales(employeeID, productID)
id name empolyeeID productID1 Joe 1 3441 Joe 1 3552 Jack 2 5443 Jill NULL NULL
Jill ispresent
![Page 38: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/38.jpg)
(INNER) JOINS
SELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname
Product(pname, price, category, manufacturer)Company(cname, country)-- manufacturer is foreign key to Company
![Page 39: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/39.jpg)
(INNER) JOINSSELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname
pname category manufacturer
Gizmo gadget GizmoWorks
Camera Photo Hitachi
OneClick Photo Hitachi
cname country
GizmoWorks USA
Canon Japan
Hitachi Japan
Product Company
![Page 40: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/40.jpg)
(INNER) JOINS
pname category manufacturer
Gizmo gadget GizmoWorks
Camera Photo Hitachi
OneClick Photo Hitachi
cname country
GizmoWorks USA
Canon Japan
Hitachi Japan
SELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname
Product Company
![Page 41: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/41.jpg)
(INNER) JOINS
pname category manufacturer
Gizmo gadget GizmoWorks
Camera Photo Hitachi
OneClick Photo Hitachi
cname country
GizmoWorks USA
Canon Japan
Hitachi Japan
SELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname
Product Company
![Page 42: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/42.jpg)
(INNER) JOINS
pname category manufacturer
Gizmo gadget GizmoWorks
Camera Photo Hitachi
OneClick Photo Hitachi
cname country
GizmoWorks USA
Canon Japan
Hitachi Japan
pname category manufacturer cname country
Gizmo gadget GizmoWorks GizmoWorks USA
SELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname
Product Company
![Page 43: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/43.jpg)
(INNER) JOINS
pname category manufacturer
Gizmo gadget GizmoWorks
Camera Photo Hitachi
OneClick Photo Hitachi
cname country
GizmoWorks USA
Canon Japan
Hitachi Japan
SELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname
Product Company
![Page 44: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/44.jpg)
(INNER) JOINS
pname category manufacturer
Gizmo gadget GizmoWorks
Camera Photo Hitachi
OneClick Photo Hitachi
cname country
GizmoWorks USA
Canon Japan
Hitachi Japan
Product Company
SELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname
![Page 45: joinsJOINS IN SQL The standard join in SQL is sometimes called an inner join •Each row in the result must come from both tables in the join Sometimes we want to include rows from](https://reader035.vdocument.in/reader035/viewer/2022062602/5ede5787ad6a402d6669a9fe/html5/thumbnails/45.jpg)
(INNER) JOINSSELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname
SELECT DISTINCT cnameFROM Product JOIN Company ON
country = 'USA' AND category = 'gadget' AND manufacturer = cname
SELECT DISTINCT cnameFROM Product, CompanyWHERE country='USA' AND category = 'gadget'
AND manufacturer = cname