繁体   English   中英

Access 2013-一对多关系:在“一个”侧显示所有值,仅在“许多”侧选择值

[英]Access 2013 - One to Many relationship: Show all values on “One” side and only select values on “Many” side

我有两个表tblSalaryBandtblSalaryBandYear通过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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM