我知道我错过了一些东西而且我已经完成了我的研究,但它只是没有找到我,所以我想我会发布我的问题。
我有三个表(Jobs
,Persons
和Orgs
)。 Jobs表格有org_surveyed_by_id
和person_requestor_id
。它们是外键,即它们分别等于Orgs.Org_id
和Persons.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
第二次加入给我带来了麻烦。
答案 0 :(得分:4)
您的JOIN
似乎没问题,因此persons
表上可能没有数据,person_requestor_id
表上的SURVEY_JOBS
为NULL
。尝试使用LEFT JOIN
s:
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
表的PERSONS
条件,您将看到该表的列的NULL
值。