I’m running into an issue with MS Access as I’m not all that familiar with Access SQL.
My Left Joins are being treated as inner joins due to Access placing the criteria of the left joins outside of the join clause. I’ve reviewed a few other topics here and haven’t found a suggestion that solves my issue. Any assistance is greatly appreciated!
The original query that Access Visual Designer outputs:
SELECT DISTINCT
SATURN_SPRIDEN.SPRIDEN_ID,
SATURN_SPRIDEN.SPRIDEN_LAST_NAME,
SATURN_SPRIDEN.SPRIDEN_FIRST_NAME,
STUDENT_TYPE.STUDENT_TYPE_DESCRIPTION,
SATURN_SGBSTDN.SGBSTDN_TERM_CODE_EFF,
FAISMGR_RPRAWRD.RPRAWRD_OFFER_AMT AS Opportunity_Offered,
FAISMGR_RPRAWRD_1.RPRAWRD_OFFER_AMT AS Lottery_Offered,
FAISMGR_RPRAWRD_2.RPRAWRD_OFFER_AMT AS FSEOG_Offered,
FAISMGR_RPRAWRD_3.RPRAWRD_OFFER_AMT AS Pell_Offered
FROM ((((SATURN_SPRIDEN INNER JOIN (SATURN_SGBSTDN INNER JOIN STUDENT_TYPE ON SATURN_SGBSTDN.SGBSTDN_STYP_CODE = STUDENT_TYPE.STUDENT_TYPE_CODE) ON SATURN_SPRIDEN.SPRIDEN_PIDM = SATURN_SGBSTDN.SGBSTDN_PIDM)
LEFT JOIN FAISMGR_RPRAWRD ON SATURN_SPRIDEN.SPRIDEN_PIDM = FAISMGR_RPRAWRD.RPRAWRD_PIDM)
LEFT JOIN FAISMGR_RPRAWRD AS FAISMGR_RPRAWRD_1 ON SATURN_SPRIDEN.SPRIDEN_PIDM = FAISMGR_RPRAWRD_1.RPRAWRD_PIDM)
LEFT JOIN FAISMGR_RPRAWRD AS FAISMGR_RPRAWRD_2 ON SATURN_SPRIDEN.SPRIDEN_PIDM = FAISMGR_RPRAWRD_2.RPRAWRD_PIDM)
LEFT JOIN FAISMGR_RPRAWRD AS FAISMGR_RPRAWRD_3 ON SATURN_SPRIDEN.SPRIDEN_PIDM = FAISMGR_RPRAWRD_3.RPRAWRD_PIDM
WHERE (((SATURN_SGBSTDN.SGBSTDN_TERM_CODE_EFF)=[entry term]) AND ((FAISMGR_RPRAWRD.RPRAWRD_AIDY_CODE)=[aidy]) AND ((FAISMGR_RPRAWRD.RPRAWRD_FUND_CODE) In ('SNMOS','SNMOSG','SNMOSR','SNMOSF')) AND ((FAISMGR_RPRAWRD_1.RPRAWRD_AIDY_CODE)=[aidy]) AND ((FAISMGR_RPRAWRD_1.RPRAWRD_FUND_CODE)='SLOTT') AND ((FAISMGR_RPRAWRD_2.RPRAWRD_AIDY_CODE)=[aidy]) AND ((FAISMGR_RPRAWRD_2.RPRAWRD_FUND_CODE)='FSEOG') AND ((FAISMGR_RPRAWRD_3.RPRAWRD_AIDY_CODE)=[aidy]) AND ((FAISMGR_RPRAWRD_3.RPRAWRD_FUND_CODE)='FPELL'));
How I would design this in Oracle SQL for my desired outcome:
SELECT DISTINCT
SATURN_SPRIDEN.SPRIDEN_ID,
SATURN_SPRIDEN.SPRIDEN_LAST_NAME,
SATURN_SPRIDEN.SPRIDEN_FIRST_NAME,
STUDENT_TYPE.STUDENT_TYPE_DESCRIPTION,
SATURN_SGBSTDN.SGBSTDN_TERM_CODE_EFF,
FAISMGR_RPRAWRD.RPRAWRD_OFFER_AMT AS Opportunity_Offered,
FAISMGR_RPRAWRD_1.RPRAWRD_OFFER_AMT AS Lottery_Offered,
FAISMGR_RPRAWRD_2.RPRAWRD_OFFER_AMT AS FSEOG_Offered,
FAISMGR_RPRAWRD_3.RPRAWRD_OFFER_AMT AS Pell_Offered
FROM
SATURN_SPRIDEN
INNER JOIN SATURN_SGBSTDN
ON SATURN_SPRIDEN.SPRIDEN_PIDM = SATURN_SGBSTDN.SGBSTDN_PIDM
INNER JOIN STUDENT_TYPE
ON SATURN_SGBSTDN.SGBSTDN_STYP_CODE = STUDENT_TYPE.STUDENT_TYPE_CODE
LEFT JOIN FAISMGR_RPRAWRD
ON SATURN_SPRIDEN.SPRIDEN_PIDM = FAISMGR_RPRAWRD.RPRAWRD_PIDM
AND FAISMGR_RPRAWRD.RPRAWRD_AIDY_CODE = [aidy]
AND FAISMGR_RPRAWRD.RPRAWRD_FUND_CODE IN ('SNMOS', 'SNMOSG', 'SNMOSR', 'SNMOSF')
LEFT JOIN FAISMGR_RPRAWRD AS FAISMGR_RPRAWRD_1
ON SATURN_SPRIDEN.SPRIDEN_PIDM = FAISMGR_RPRAWRD_1.RPRAWRD_PIDM
AND FAISMGR_RPRAWRD_1.RPRAWRD_AIDY_CODE = [aidy]
AND FAISMGR_RPRAWRD_1.RPRAWRD_FUND_CODE = 'SLOTT'
LEFT JOIN FAISMGR_RPRAWRD AS FAISMGR_RPRAWRD_2
ON SATURN_SPRIDEN.SPRIDEN_PIDM = FAISMGR_RPRAWRD_2.RPRAWRD_PIDM
AND FAISMGR_RPRAWRD_2.RPRAWRD_AIDY_CODE = [aidy]
AND FAISMGR_RPRAWRD_2.RPRAWRD_FUND_CODE = 'FSEOG'
LEFT JOIN FAISMGR_RPRAWRD AS FAISMGR_RPRAWRD_3
ON SATURN_SPRIDEN.SPRIDEN_PIDM = FAISMGR_RPRAWRD_3.RPRAWRD_PIDM
AND FAISMGR_RPRAWRD_3.RPRAWRD_AIDY_CODE = [aidy]
AND FAISMGR_RPRAWRD_3.RPRAWRD_FUND_CODE = 'FPELL'
WHERE
SATURN_SGBSTDN.SGBSTDN_TERM_CODE_EFF = [entry term];