Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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 按预查询记录中的属性查询(Oracle)_Sql_Oracle_Nested Query - Fatal编程技术网

Sql 按预查询记录中的属性查询(Oracle)

Sql 按预查询记录中的属性查询(Oracle),sql,oracle,nested-query,Sql,Oracle,Nested Query,下面有一个表MEETINGPARTICIPANT,主键是ORGID,MEETINGID和PARTICIPANTID Name Null? Type ------------------ -------- ------------- ORGID NOT NULL NUMBER(10) MEETINGID NOT NULL VARCHAR2(32) PARTICIPANTID NO

下面有一个表
MEETINGPARTICIPANT
,主键是
ORGID
MEETINGID
PARTICIPANTID

Name               Null?    Type          
------------------ -------- ------------- 
ORGID              NOT NULL NUMBER(10)    
MEETINGID          NOT NULL VARCHAR2(32) 
PARTICIPANTID      NOT NULL VARCHAR2(32) 
EMPLOYEEID         NOT NULL VARCHAR2(32) 
DISPLAYNAME                 VARCHAR2(128) 
EMAIL                       VARCHAR2(128) 
JOINTIME           NOT NULL DATE          
LEAVETIME          NOT NULL DATE          
CREATETIME         NOT NULL DATE          
LASTMODIFIEDTIME   NOT NULL DATE 
第1步,按
ORGID
MEETINGID
EMPLOYEEID
列出记录,获取记录列表

SELECT
    *
FROM
    MEETINGPARTICIPANT
WHERE
    ORGID=#{orgId}
    AND MEETINGID=#{meetingId}
    AND EMPLOYEEID=#{employeeId}
步骤2,迭代步骤1的每条记录,通过步骤1的
EMAIL
DISPLAYNAME
再次搜索,合并到一个大记录列表

for (each record in step 1) {

    SELECT
        *
    FROM
        MEETINGPARTICIPANT
    WHERE
        ORGID=#{orgId}
        AND MEETINGID=#{meetingId}
        AND EMAIL=#{record.email} AND DISPLAYNAME=#{record.displayName}

    Merge searched records to mergedRecords
}
步骤3,返回
mergedRecords


问题是,如何将步骤1和步骤2中的SQL合并为单个SQL?

下面的SQL似乎可以工作。
NVL(EMAIL,”)
NVL(DISPLAYNAME,”)
将处理电子邮件或DISPLAYNAME为空的记录

SELECT
    *
FROM
    MEETINGPARTICIPANT
WHERE
    ORGID=#{orgId}
    AND MEETINGID=#{meetingId}
    AND (NVL(EMAIL, ' '), NVL(DISPLAYNAME, ' ')) IN (
        SELECT
            NVL(EMAIL, ' '), NVL(DISPLAYNAME, ' ')
        FROM
            MEETINGPARTICIPANT
        WHERE
            ORGID=#{orgId}
            AND MEETINGID=#{meetingId}
            AND EMPLOYEEID=#{employeeId}
    )