[英]One to Many Relationship with IN clause not giving all the many side values
[英]Access 2013 - One to Many relationship: Show all values on “One” side and only select values on “Many” side
我有兩個表tblSalaryBand
和tblSalaryBandYear
通過tblSalaryBand.ID = tblSalaryBandYear.SalaryBandID
鏈接。 在tblSalaryBandYear
我具有BandMax和BandMin的值,然后是ReviewYearID。 因此,對於每個薪水等級,我每年可以有一個最大值和一個最小值。
我想做的是列出所有薪資等級以及所選年份的最高和最低清單。 但是, tblSalaryBandYear
該年的薪水范圍可能還沒有值。
我有一個連續的表單設置,即使使用左連接在tblSalaryBandYear
沒有值,我也可以顯示所有薪水范圍:
SELECT tblSalaryBand.BandName, tblSalaryBandYear.BandMax, tblSalaryBandYear.BandMin, tblSalaryBand.ID AS SalaryBandID
FROM tblSalaryBand LEFT JOIN tblSalaryBandYear ON tblSalaryBand.ID = tblSalaryBandYear.SalaryBandID;
但是,當我嘗試按ReviewYearID過濾掉它們時,如果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]));
有沒有一種方法可以顯示所有薪級,然后僅顯示所選檢查年度的BandMin和Max值?
問題是where子句有效地消除了沒有任何匹配的ReviewYearID的行(並使聯接的行為類似於內部聯接而不是左側外部聯接)。
嘗試以下方法:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.