Download presentation
Presentation is loading. Please wait.
Published byHenry Rogers Modified over 9 years ago
1
Agenda for 02/21/2006 Learn how to use more than one table in a query. Discuss how DBMS processes multiple tables. Explain the different types of joins. Describe join conditions. Do lab exercise
2
Sample Database ERD Assume referential integrity is NOT maintained in this database
3
Vocabulary Words Select List Result Table Join Cartesian Product/Cross Join Join Condition Multiple Table Access SELECT * FROMemp, time;
4
Combining Tables Based on a Shared Column (newer syntax – using join condition) SELECTname, contractid, datetime, amount/60 FROMtime INNER JOINemp ONtime.empid = emp.empid
5
Viewing all rows from one of the tables in a join (newer syntax using join condition) SELECTname, time.empid contractid, datetime, amount/60 FROMtime LEFT OUTER JOINemp ONemp.empid = time.empid Imagine that the time table is “left” (because it is declared first) and the emp table is “right” (because it is declared second)
6
Right outer join – Viewing all rows in other table (newer syntax using join condition) SELECT name, time.empid, contractid, datetime, amount/60 FROM time RIGHT OUTER JOINemp ON time.empid = emp.empid ; Remember that the time table is “left” (because it is declared first) and the emp table is “right” (because it is declared second)
7
Full outer join – Viewing all rows in both tables (newer syntax using join condition – option 1 is not available) SELECTname, time.empid, contractid, datetime, amount/60 FROM time FULL OUTER JOINemp ON time.empid = emp.empid;
8
SELECTemp.name, time.empid, time.worktypeid, work.description, datetime, amount/60 FROMtime INNER JOINemp ONtime.empid = emp.empid INNER JOINwork ONtime.worktypeid = work.worktypeid; Combining more than two tables into a single result table
9
Displaying all data in TIME table COLUMN emp_name heading “Employee Name” COLUMN descr heading “Type of Work” SELECT NVL(emp.name,'NOT IN EMPLOYEE TABLE') emp_name, time.empid, time.worktypeid, NVL(work.description,'NOT IN WORK TABLE’) descr, datetime, amount/60 FROMtime LEFT OUTER JOINemp ONtime.empid = emp.empid LEFT OUTER JOINwork ONtime.worktypeid = work.worktypeid ORDER BYemp.name;
10
Adding a standard condition SELECT NVL(emp.name,'NOT IN EMPLOYEE TABLE') emp_name, time.empid, time.worktypeid, NVL(work.description,'NOT IN WORK TABLE’) descr, datetime, amount/60 FROMtime LEFT OUTER JOINemp ONtime.empid = emp.empid LEFT OUTER JOINwork ONtime.worktypeid = work.worktypeid WHERE datetime BETWEEN ’01-jan-2006’ and ’15-jan-2006’ ORDER BY emp.name;
11
Summarizing Data COLUMN descr heading “Type of Work” SELECT NVL(work.description, ‘No Description’) descr, round(sum(amount/60),2) FROM time LEFT OUTER JOIN work ON work.worktypeid = time.worktypeid GROUP BY work.description ; The GROUP BY statement is frequently used with a result table created by multiple underlying tables
12
Recursive Relationship with Employee to Assign Manager
13
Self-join also called a recursive join (newer syntax using join condition) SELECTworker.empid "worker#", worker.name "worker name", manager.empid "manager#", manager.name "manager name" FROMemp worker INNER JOINemp manager ONworker.mgrid = manager.empid; What change is necessary to make all employees appear whether there is a manager?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.