Sql 连接三个表而不返回数据
我知道我遗漏了一些东西,我也做了研究,但我就是不知道,所以我想我应该把我的问题公布出来 我有三个表(Sql 连接三个表而不返回数据,sql,jointable,Sql,Jointable,我知道我遗漏了一些东西,我也做了研究,但我就是不知道,所以我想我应该把我的问题公布出来 我有三个表(作业,人员,以及组织)。Jobs表有一个按id调查的组织和个人请求者id。它们是外键,即它们分别等于Orgs.Org_id和Persons.personal_id的值 我试图将这三个表链接在一起,并从persons表和organizations表中获取信息。我可以加入一个,但当我加入第二个,我没有得到任何结果 我做错了什么 SELECT sj.JOB_NUMBER, sj.TITLe, sj.JO
作业
,人员
,以及组织
)。Jobs表有一个按id调查的组织和个人请求者id
。它们是外键,即它们分别等于Orgs.Org_id
和Persons.personal_id
的值
我试图将这三个表链接在一起,并从persons表和organizations表中获取信息。我可以加入一个,但当我加入第二个,我没有得到任何结果
我做错了什么
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
第二次加入给我带来了问题。您的加入似乎很好,因此人员表上可能没有数据,或者调查工作表上的人员请求者id
为空。尝试使用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
您仍然应该得到结果,如果PERSONS
表的JOIN
条件不满足,您将看到该表的列的NULL
值。您的JOIN
看起来不错,因此PERSONS
表上可能没有数据,或SURVEY\u JOBS
表上的person\u requestor\u id
为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
您仍然应该得到结果,如果PERSONS
表的JOIN
条件不满足,您将看到该表的列的NULL
值。您确定填充了数据以便得到结果吗?您确定填充了数据以便得到结果吗?哇……工作非常好,都是因为左连接插入了连接。这些都是我讨厌的东西……它们让我发疯,但谢谢你的帮助……哇……效果很好,都是因为加入了左键。这些都是我讨厌的东西……它们让我发疯,但谢谢你的帮助