2

我知道我遗漏了一些东西并且我已经完成了我的研究,但它只是没有来找我,所以我想我会发布我的问题。

我有三个表(JobsPersonsOrgs)。Jobs 表有一个org_surveyed_by_idperson_requestor_id。它们是外键,即它们分别等于 和 的Orgs.Org_idPersons.Person_id

我试图将这三个表链接在一起,并从人员表和组织表中获取信息。我可以加入一个,但是当我加入第二个时,我没有得到任何结果。

我究竟做错了什么?

SELECT sj.JOB_NUMBER, sj.TITLe, sj.JOB_CATEGORY, 
       sj.PURPOSE, sj.ORG_SURVEYED_BY_ID, 
       sj.PERSON_REQUESTOR_ID, os.org_full_name
FROM SURVEY_JOBS sj
    JOIN organizations os ON sj.org_surveyed_by_id = os.org_id
    JOIN persons ps ON sj.person_requestor_id = ps.person_id
WHERE SURVEY_JOB_ID = :P30_SURVEY_JOB_ID 

第二次加入给我带来了问题。

4

1 回答 1

4

你的JOIN看起来很好,所以桌子上可能没有数据persons,或者桌子person_requestor_idSURVEY_JOBSNULL. 尝试使用LEFT JOINs:

SELECT  sj.JOB_NUMBER, 
        sj.TITLe, 
        sj.JOB_CATEGORY, 
        sj.PURPOSE, 
        sj.ORG_SURVEYED_BY_ID, 
        sj.PERSON_REQUESTOR_ID, 
        os.org_full_name,
        ps.SomeColumnHere
FROM SURVEY_JOBS sj
LEFT JOIN ORGANIZATIONS os 
    ON sj.org_surveyed_by_id = os.org_id
LEFT JOIN PERSONS ps 
    ON sj.person_requestor_id = ps.person_id
WHERE sj.SURVEY_JOB_ID = :P30_SURVEY_JOB_ID 

您仍然应该得到结果,如果不满足表的JOIN条件,您将看到该表的列的值。PERSONSNULL

于 2013-04-09T16:40:09.850 回答