Presentation on theme: "Join Queries CS 146. Introduction: Join Queries So far, our SELECT queries have retrieved data from a single table Usually queries combine data from multiple."— Presentation transcript:
Introduction: Join Queries So far, our SELECT queries have retrieved data from a single table Usually queries combine data from multiple tables: List how much (pounds) of each product that was purchased today List the customer name and product name for a specific purchase Queries that retrieve data from multiple tables require joining the tables through primary key/foreign key relationships
Main Types of Join Queries Inner Join Retrieves all matching fields in joined tables Also called equijoin or natural join Outer Join Retrieves all fields in one table, and matching fields in second table if they exist
Example Inner Join CANDY_CUSTOMER CANDY_PURCHASE CANDY_PRODUCT
Join Query Syntax (ANSI 1992) The word "INNER" is optional SELECT Column1, Column2, … FROM Table1 INNER JOIN Table2 ON Table1.JoinColumn = Table2.JoinColumn WHERE SearchCondition(s) Join condition
Join Query Example (ANSI 1992) Note: Order of tables in FROM clause doesnt matter Order of tables in ON condition doesnt matter
Qualifying Field Names What if a join query retrieves a field that exists in both tables?
Qualifying Field Names You qualify the field name in the SELECT clause Preface the field name with the name of either table
Shorthand way to write queries by abbreviating table names Pros & cons? Table Aliases NOTE: Once you create a table alias, you have to use it everywhere…
Inner Join of 3 Tables General syntax: Note: Placing each INNER JOIN and ON clause on a separate line makes the query easier to read and understand SELECT Column1, Column2, … FROM Table1 INNER JOIN Table2 ON Table1.JoinColumn = Table2.JoinColumn INNER JOIN Table3 ON Table2.JoinColumn = Table3.JoinColumn WHERE SearchCondition(s)
Joining N Tables You can join any number of tables, provided primary key/foreign key relationships exist Challenge: Including all necessary tables in the query
You can join any number of tables, provided primary key/foreign key relationships exist Challenge: you need to include table in join queries to provide needed links even if you don't include fields in the SELECT clause… Joining N Tables
Example CANDY_PRODUCT prod_desc (D) prod_id (J) CANDY_CUSTOMER cust_name (S) cust_id (J) CANDY_PURCHASE prod_id (J) cust_id (J) SELECT prod_desc FROM candy_product INNER JOIN candy_purchase ON candy_product.prod_id = candy_purchase.prod_id INNER JOIN candy_customer ON candy_purchase.cust_id = candy_customer.cust_id WHERE cust_name = 'Bobby Bon Bons'
Designing Complex Join Queries Terminology: Display field: Retrieved data field Appears in the SELECT clause Join field Primary or foreign key used to join tables Appears in a join condition Search field Used in a search condition Appears in the WHERE clause Join queries must include all tables that contain display, join, or search fields
Query Design Diagrams Visual way to identify display, join, and search fields Process: 1. Identify every table in the query 2. Identify every involved field in each table Label whether it is a display, search, or join field 3. Create join condition links