在Access SQL中加入语句

时间:2014-11-18 13:19:47

标签: sql ms-access join ms-access-2010 left-join

我是SQL的新手,以及它如何与Access一起使用,我遇到的问题是只返回特定集合中的项目。

因此根据我读到的定义,LEFT JOIN语句应该返回Left表中的所有记录,然后只返回Right表中的特定记录。由于某种原因,它不会返回我左表中的所有记录。请参阅下面的代码。它仍然以某种方式只想返回具有某种关系的记录。有任何想法吗?我想要从左表(tbl_historicOrg)中返回所有记录,然后只返回Right表中的特定记录。

SELECT tbl_historicOrg.NAME, tbl_historicOrg.Racf, tbl_historicOrg.STATUS, tbl_historicOrg.PCF, tbl_historicOrg.[Date Finalized], tbl_historicOrg.[Hist Month], import_data.SCHDLE_EXCPT_NM, import_data.HOURS
FROM tbl_historicOrg LEFT JOIN import_data ON tbl_historicOrg.Racf = import_data.RACF
WHERE (((import_data.SCHDLE_EXCPT_NM)="System Problems"));

非常感谢任何建议或更正。

2 个答案:

答案 0 :(得分:1)

尝试如下;获取过滤后的数据并使用该结果集执行JOIN

SELECT tbl_historicOrg.NAME, 
tbl_historicOrg.Racf, 
tbl_historicOrg.STATUS, 
tbl_historicOrg.PCF, 
tbl_historicOrg.[Date Finalized], 
tbl_historicOrg.[Hist Month],
tab.SCHDLE_EXCPT_NM, 
tab.HOURS 
FROM tbl_historicOrg 
LEFT JOIN (
select SCHDLE_EXCPT_NM, 
       HOURS,
       RACF
from import_data where SCHDLE_EXCPT_NM = "System Problems" ) as tab
ON tbl_historicOrg.Racf = tab.RACF;

答案 1 :(得分:0)

您的查询应如下所示,不要对第二个表使用'WHERE'子句,它会过滤'import_data.SCHDLE_EXCPT_NM =“系统问题”的数据<'

SELECT tbl_historicOrg.NAME, tbl_historicOrg.Racf, tbl_historicOrg.STATUS, 
tbl_historicOrg.PCF, tbl_historicOrg.[Date Finalized], tbl_historicOrg.[Hist Month], 
import_data.SCHDLE_EXCPT_NM, import_data.HOURS
FROM tbl_historicOrg LEFT JOIN import_data ON tbl_historicOrg.Racf = import_data.RACF