View
219
Download
1
Category
Tags:
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