我遇到了一个子查询问题。我必须将多个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版本。
答案 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_id
或alignment_id
。
希望这会对你有所帮助。