簡體   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