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

Preview:

Citation preview

1

All Powder Board and Ski

Microsoft Access WorkbookChapter 5: Advanced QueriesJerry PostCopyright © 2007

2

Primary Tables

3

Find Best Customers: 1

Total sales by customer.

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

5

Average Customer Sales

SELECT Avg(CustomerSales.SalesValue) AS AvgOfSalesValue

FROM CustomerSales;

$942.11

6

Action

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

7

Best Customers

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

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;

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

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);

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

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

13

LEFT JOIN Results

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

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

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;

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

17

Model Quantity On Hand

18

Categories

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

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.

21

Sales Categories

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

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#));

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

25

Query Parameters

26

Action

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

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)

);

28

Create a Temporary Table

CREATE TABLE MyTemp(

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

);

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

30

INSERT INTO (One Row)

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

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

31

INSERT INTO (Copy Rows)

INSERT INTO MyTemp (ID, LName, FName)

SELECT CustomerID, LastName, FirstName

FROM Customer

WHERE City='Sacramento'

;

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

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

34

Action

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

35

DELETE Rows

DELETE FROM MyTempWHERE ID > 100;

36

DROP TABLE

DROP TABLE MyTemp;

Recommended