Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接三个表而不返回数据_Sql_Jointable - Fatal编程技术网

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
值。

您确定填充了数据以便得到结果吗?您确定填充了数据以便得到结果吗?哇……工作非常好,都是因为左连接插入了连接。这些都是我讨厌的东西……它们让我发疯,但谢谢你的帮助……哇……效果很好,都是因为加入了左键。这些都是我讨厌的东西……它们让我发疯,但谢谢你的帮助