我是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"));
非常感谢任何建议或更正。
答案 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