and break out my excel tables into multiple access tables (
I.E. standard electric, standard gas etc all need to be their own table). Is this correct?
Not quite, and the correct answer depends on your business rules. From the data now supplied I would suggest something like
tblAppliances
AppliancePK..ApplianceDesc
1.................Standard Electric
2.................Standard Gas
3.................Gourmet Electric
etc
tblPrices
PricePK..ApplianceFK..Price.......... PriceFrom
1..........1..................$1,761.95...01/01/2014
2..........2..................$1,895.83...01/01/2014
3..........3..................$3,784.26...01/01/2014
4..........4..................$4,105.00...01/01/2014
5..........1..................$1,861.95...01/01/2015
6..........2..................$1,995.83...01/01/2015
7..........3..................$3,984.26...01/01/2015
8..........4..................$4,305.00...01/01/2015
etc
the reason for keeping prices in a separate table is because prices can change - but the appliance description doesn't - and you can use the date for the system to determine which price to apply
then in your other tables
tblPlans
PlanPK...PlanDesc....ApplianceFK
1...........Ash...........1
2...........Beech........1
3...........Birch.........1
4...........Bradford....1
etc
then this query will select the price designated for an appliance specified in a plan
Code:
SELECT PlanDesc, ApplianceDesc, Price
FROM (tbPlans INNER JOIN tblAppliances ON tblPlans.ApplianceFK= tblAppliances.AppliancePK) INNER JOIN tblPrices ON tblAppliances.AppliancePK=tblPrices.ApplianceFK
WHERE PriceFrom>=#01/01/2015#
and this will provide all appliance prices for all plans
Code:
SELECT PlanDesc, ApplianceDesc, Price
FROM tbPlans, tblAppliances INNER JOIN tblPrices ON tblAppliances.AppliancePK=tblPrices.ApplianceFK
WHERE PriceFrom>=#01/01/2015#
and this will provide a similar view of your data as you currently have in your Appliance table
Code:
TRANSFORM First(Price) AS currentPrice
SELECT PlanDesc
FROM tbPlans, tblAppliances INNER JOIN tblPrices ON tblAppliances.AppliancePK=tblPrices.ApplianceFK
WHERE PriceFrom>=#01/01/2015#
GROUP BY PlanDesc
PIVOT ApplianceDesc