0

我正在使用下面的 Access 查询来调出在“堆栈”和“lebh shomea 库”中具有保存位置的书目记录。但是,Access 中的“and”运算符没有显示任何记录,而“or”运算符显示了位置为“stacks”的所有内容以及位置为“lebh shomea library”的所有内容。我需要两个位置都拥有(仅)馆藏的记录。

SELECT BIB_TEXT.BIB_ID,
       BIB_TEXT.AUTHOR,
       BIB_TEXT.TITLE_BRIEF,
       BIB_TEXT.PUBLISHER_DATE,
       BIB_VW.MFHD_LOCATION
FROM ((((BIB_TEXT
         INNER JOIN BIB_VW ON BIB_TEXT.BIB_ID = BIB_VW.BIB_ID)
        INNER JOIN MFHD_MASTER ON BIB_VW.MFHD_ID = MFHD_MASTER.MFHD_ID)
       INNER JOIN MFHD_HISTORY ON MFHD_MASTER.MFHD_ID = MFHD_HISTORY.MFHD_ID)
      INNER JOIN MFHD_ITEM ON MFHD_MASTER.MFHD_ID = MFHD_ITEM.MFHD_ID)
INNER JOIN BIB_MFHD ON BIB_TEXT.BIB_ID = BIB_MFHD.BIB_ID
WHERE (((BIB_VW.MFHD_LOCATION)="STACKS"
        OR (BIB_VW.MFHD_LOCATION)="LEBH SHOMEA LIBRARY"));
4

1 回答 1

0

BIB_TEXT我假设和中的记录之间存在一对多的关系BIB_VW。如果是这种情况,您需要查询BIB_VW

SELECT BIB_ID 
FROM BIB_VW 
WHERE MFHD_LOCATION="STACKS" OR MFHD_LOCATION="LEBH SHOMEA LIBRARY" 
GROUP BY BIB_ID 
HAVING COUNT(MFHD_LOCATION) = 2

...并BIB_VW在您的原始查询中替换为此子查询的引用,删除原始查询的WHERE子句。

于 2013-09-23T22:34:12.960 回答