[英]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.