I've got two tables - tblSalaryBand
and tblSalaryBandYear
linked by tblSalaryBand.ID = tblSalaryBandYear.SalaryBandID
. Within tblSalaryBandYear
I have values for BandMax and BandMin, and then a ReviewYearID. So for each Salary Band I can have a Max and a Min for each year.
What I would like to do is have a list of all Salary Bands and the Max and Min for the selected year. However there may not yet be a values for the Salary Band for that year in the tblSalaryBandYear
.
I've got a continuous form setup which I can get to show all Salary Bands even if they don't have a value in tblSalaryBandYear
using an left join:
SELECT tblSalaryBand.BandName, tblSalaryBandYear.BandMax, tblSalaryBandYear.BandMin, tblSalaryBand.ID AS SalaryBandID
FROM tblSalaryBand LEFT JOIN tblSalaryBandYear ON tblSalaryBand.ID = tblSalaryBandYear.SalaryBandID;
But when I try to filter them down by ReviewYearID they don't show at all if no value exists in tblSalaryBandYear
.
SELECT tblSalaryBand.BandName, tblSalaryBandYear.BandMax, tblSalaryBandYear.BandMin, tblSalaryBand.ID AS SalaryBandID
FROM tblSalaryBand LEFT JOIN tblSalaryBandYear ON tblSalaryBand.ID = tblSalaryBandYear.SalaryBandID
WHERE (((tblSalaryBandYear.ReviewYearID)=[Forms]![frmHome]![SelectedYear]));
Is there a way to have all Salary Bands show and then only show values for BandMin and Max from the selected review year?
The issue is that the where clause effectively eliminates the rows without any matching ReviewYearID (and makes the join behave like an inner join instead of a left outer join).
Try this instead:
SELECT
tblSalaryBand.BandName, tblSalaryBandYear.BandMax,
tblSalaryBandYear.BandMin, tblSalaryBand.ID AS SalaryBandID
FROM tblSalaryBand
LEFT JOIN (
SELECT *
FROM tblSalaryBandYear
WHERE ReviewYearID = [Forms]![frmHome]![SelectedYear]
) AS SBY ON tblSalaryBand.ID = SBY.SalaryBandID
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.