子查询有问题

时间:2014-09-17 05:34:37

标签: sql oracle

我遇到了一个子查询问题。我必须将多个ID传递给我的子查询..但是我的查询得不到正确的结果......

这是我的样本数据和我的表结构..

Employee Table:
------------------------
EMPLOYEE_ID NOT NULL    NUMBER(16)
EXTERNAL_ID_1       VARCHAR2(200)
EXTERNAL_ID_2       VARCHAR2(200)
JOB_PROFILE_TYPE        VARCHAR2(4)
FIRST_NAME  NOT NULL    VARCHAR2(200)
MIDDLE_NAME     VARCHAR2(200)

Alignment Table :
-------------------------
ALIGNMENT_ID    NOT NULL    NUMBER(16)
TEAM_ID NOT NULL    NUMBER(16)
EMPLOYEE_ID     NUMBER(16)
ALIGNMENT_NAME  NOT NULL    VARCHAR2(200)
EXTERNAL_ID_1       VARCHAR2(200)
STATUS  NOT NULL    VARCHAR2(4)
STATUS_CHANGE_DATE  NOT NULL    DATE
MANAGER_ALIGNMENT_ID        NUMBER(16)

Event table :
-------------------
EVENT_ID    NOT NULL    NUMBER(16)
EMPLOYEE_ID NOT NULL    NUMBER(16)
AFFILIATION_ID      NUMBER(16)
CUSTOMER_ID     NUMBER(16)
EXTERNAL_ID_1       VARCHAR2(200)

Sample data :
ALIGNMENT_ID    ALIGNMENT_NAME  EMPLOYEE_ID ROLE    MANAGER_ALIGNMENT_ID
1006034672  SII-KRN-BANG-A01    17452000001661  REP 1006034513
1006034673  SII-KRN-BANG-A02    18910000219453  REP 1006034513
1006034674  SII-KRN-BANG-A03    60000001963804  REP 1006034513
1006034675  SII-KRN-BANG-A05    60000001963706  REP 1006034514
1006034676  SII-KRN-BANG-A06    18910000081856  REP 1006034514
1006034677  SII-KRN-BANG-B01    60000001963699  REP 1006034513

我的查询:

SELECT  *
FROM    event ev
INNER JOIN employee e ON e.employee_id=ev.employee_id
INNER JOIN alignment a ON e.employee_id=a.employee_id AND alignment_id in(:alignment_id)

描述:

我将数据存储在对齐表中,包含子记录和父记录。在对齐表中,我有数据alignment_id和经理alignment_id。 对于每个代表,应该有一位经理。(manager_alignment_id)。 我必须将此查询集成到前端..

在前端,我有下拉值,并会选择多个ID传递给此查询... 如果alignment_id(rep)的选择没有问题。如果他们会选择manager_alignment_id,那么如何将此值传递给mu查询。

我正在使用oracle 11g版本。

1 个答案:

答案 0 :(得分:0)

这可能是您正在寻找的查询:

SELECT *
FROM employee E
INNER JOIN alignment A ON A.employee_id = E.employee_id
                         AND (A.manager_alignment_id = <Your value here>
                            OR A.alignment_id = <Your value here>)

此查询返回与定义的manager_alignment_idalignment_id

对应的每一行

希望这会对你有所帮助。