36
1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

Embed Size (px)

Citation preview

Page 1: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

1

All Powder Board and Ski

Microsoft Access WorkbookChapter 5: Advanced QueriesJerry PostCopyright © 2007

Page 2: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

2

Primary Tables

Page 3: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

3

Find Best Customers: 1

Total sales by customer.

Page 4: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

4

Action

ActionCreate a new query in Design viewTables: Customer, Sale, SaleItemColumns: CustomerID, LastName, FirstName,

SalesValue: [QuantitySold]*[SalePrice]Sum the SalesValue, Group By the restSave query as CustomerSalesCreate new query in Design viewTable: CustomerSales queryColumns: SalesValueSet Totals and select AvgRun the query

Page 5: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

5

Average Customer Sales

SELECT Avg(CustomerSales.SalesValue) AS AvgOfSalesValue

FROM CustomerSales;

$942.11

Page 6: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

6

Action

ActionCreate a new query in Design viewTable: CustomerSales queryColumns: LastName, FirstName, SalesValueCriteria for SalesValue (enter in SQL)>(SELECT Avg(SalesValue) FROM CustomerSales)

Page 7: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

7

Best Customers

SELECT .LastName, FirstName, SalesValueFROM CustomerSalesWHERE SalesValue > (Select Avg(SalesValue) FROM CustomerSales)ORDER BY SalesValue DESC;

Page 8: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

8

INNER JOIN: Sales and Rentals

SELECT Rental.RentDate, Rental.CustomerID, Sale.CustomerID, Sale.SaleDate

FROM Rental INNER JOIN Sale ON Rental.CustomerID = Sale.CustomerID;

Page 9: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

9

Action

ActionCreate a new query in Design viewTables: Rental and SaleColumns: RentDate, SaleDate, and CustomerID

from both tables.Join the tables on CustomerIDRun the queryJoin the tables on RentDate=SaleDateRun the query

Page 10: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

10

Inner Join: Same Customer and Day

SELECT Rental.RentDate, Rental.CustomerID, Sale.CustomerID, Sale.SaleDate

FROM Rental INNER JOIN Sale ON (Rental.RentDate = Sale.SaleDate) AND (Rental.CustomerID = Sale.CustomerID);

Page 11: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

11

Action

ActionCreate a new query in Design viewTables: Customer, Sale, RentalColumns: LastName, FirstName, and

CustomerID from Sale and RentalDelete join from Rental to CustomerAdd join from Sale to RentalDouble click this new joinSelect option to include all from SaleRun the query

Page 12: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

12

LEFT JOIN: Sales + Rental

SELECT Customer.LastName, Customer.FirstName, Sale.CustomerID, Rental.CustomerID

FROM (Customer INNER JOIN Sale ON Customer.CustomerID = Sale.CustomerID) LEFT JOIN Rental ON Sale.CustomerID = Rental.CustomerID;

Join Properties: Left Join

Page 13: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

13

LEFT JOIN Results

Customers who purchased items without renting anything have missing (Null) values for the Rental.CustomerID

Page 14: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

14

Action

ActionCreate a new query in Design viewTables: Customer and SaleColumns: LastName, FirstName, and

CustomerIDCriteria for CustomerID (use SQL): Not In

(SELECT CustomerID FROM Rental)Check the SQLRun the query

Page 15: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

15

NOT IN

SELECT Customer.LastName, Customer.FirstName, Customer.CustomerIDFROM Customer INNER JOIN Sale ON Customer.CustomerID = Sale.CustomerIDWHERE Customer.CustomerID Not In (SELECT CustomerID FROM Rental)ORDER BY Customer.LastName, Customer.FirstName;

Page 16: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

16

Action

ActionCreate a new query in Design viewTable: InventoryColumns: ModelID and QuantityOnHandSum the QuantityOnHand and sort it in descending orderRun the querySave it as ModelsOnHandCreate a new table in Design viewColumns: CategoryID, CategoryName, LowLimit, HighLimitSave it as SalesCategoryEnter data

Page 17: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

17

Model Quantity On Hand

Page 18: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

18

Categories

Page 19: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

19

Action

ActionCreate a new query in Design viewTables: ModelsOnHand and SalesCategoryColumns: ModelID, SumOfQuantityOnHand,

CategoryID, and CategoryNameIn SQL view add the inequality joinRun the query

Page 20: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

20

Inequality Join

SELECT ModelsOnHand.ModelID, ModelsOnHand.SumOfQuantityOnHand, SalesCategory.CategoryID, SalesCategory.CategoryName

FROM ModelsOnHand INNER JOIN SalesCategory ON (ModelsOnHand.SumOfQuantityOnHand>=SalesCategory.LowLimit) AND (ModelsOnHand.SumOfQuantityOnHand<SalesCategory.HighLimit);

The join cannot be displayed in design view and must be entered by hand in SQL view.

Page 21: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

21

Sales Categories

Page 22: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

22

Action

ActionCreate a new query in Design viewTables: Customer and SaleColumns: CustomerID, LastName, FirstName, and SaleDateSet January sale date in criteria rowSwitch to SQLCopy the entire statementAdd the word UnionPaste the SELECT statement and change the date condition to

MarchRun the query

Page 23: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

23

UNION Query

List customers who bought items in January or in March.

Note: it could be done with simple conditions, but it is good practice for UNION.

SELECT Customer.CustomerID, LastName, FirstName, "Jan" As SaleMonthFROM Customer INNER JOIN Sale ON Customer.CustomerID = Sale.CustomerIDWHERE (((Sale.SaleDate) Between #1/1/2004# And #1/31/2004#))UNIONSELECT Customer.CustomerID, LastName, FirstName, "Mar" As SaleMonthFROM Customer INNER JOIN Sale ON Customer.CustomerID = Sale.CustomerIDWHERE (((Sale.SaleDate) Between #3/1/2004# And #3/31/2004#));

Page 24: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

24

Action

ActionCreate a new query in Design viewTables: Rental, RentItem, Inventory, and ItemModelColumns: RentDate, Category, RentFeeSet totals to sum RentFeeSet “Where” and criteria for RentDate to Between

[Start Date] And [End Date]Run the query

Page 25: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

25

Query Parameters

Page 26: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

26

Action

ActionCreate a new query in Design viewDo not select any tablesSwitch to SQL viewEnter the CREATE TABLE commandRun the query

Page 27: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

27

CREATE TABLE Query

CREATE TABLE Contacts(

ContactID Long,ManufacturerID Long,LastName Text(25),FirstName Text(25),Phone Text(15),Email Text(120),

CONSTRAINT pk_Contacts PRIMARY KEY (ContactID),CONSTRAINT fk_ContactsManufacturer FOREIGN KEY (ManufacturerID) REFERENCES Manufacturer(ManufacturerID)

);

Page 28: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

28

Create a Temporary Table

CREATE TABLE MyTemp(

ID Long,LName Text(25),FName Text(25)

);

Page 29: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

29

Action

ActionCreate a new query in Design viewDo not select any tablesSwitch to SQL viewType the INSERT command: INSERT INTO Customer

(LastName, FirstName, City, Gender) VALUES ('Jones', 'Jack', 'Nowhere', 'Male');

Run the query

Page 30: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

30

INSERT INTO (One Row)

INSERT INTO Customer (LastName, FirstName, City, Gender)

VALUES ('Jones', 'Jack', 'Nowhere', 'Male');

Page 31: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

31

INSERT INTO (Copy Rows)

INSERT INTO MyTemp (ID, LName, FName)

SELECT CustomerID, LastName, FirstName

FROM Customer

WHERE City='Sacramento'

;

Page 32: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

32

Action

ActionCreate a new query in Design viewTable: ItemModelColumns: Category, ModelYear, and CostCriteria: Category=”Board” And ModelYear=2004Run the queryChoose Query/Update QueryUnder Cost set Update To: Round([Cost]*1.04,2)Run the query

Page 33: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

33

UPDATE Board Cost

Query / Update Query

New value

UPDATE ItemModel SET Cost = Round([Cost]*1.04,2)WHERE (Category="Board") AND (ModelYear=2004);

Run

Page 34: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

34

Action

ActionCreate a new query in Design viewTable: MyTempColumns: ID, LName, FNameCriteria: ID>100Test the queryChoose Query/Delete QueryRun the query

Page 35: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

35

DELETE Rows

DELETE FROM MyTempWHERE ID > 100;

Page 36: 1 All Powder Board and Ski Microsoft Access Workbook Chapter 5: Advanced Queries Jerry Post Copyright © 2007

36

DROP TABLE

DROP TABLE MyTemp;