SQL:需要有关如何编写此SQL的建议

时间:2014-04-15 16:22:19

标签: sql

ASSLIB(资产和负债记录) REVEXP(Revenu& Expense记录有来自ASSLIB的FK ASSLIB_ID)

PERXRVEX(PERSON,REVEXP表之间的关系加入ON REVEXP_ID) PERXASLB(PERSON,ASSLIB表加入ASSLIB_ID之间的关系)

通常,所有由PERSON(在PERXRVEX中)拥有的REVEXP都链接到ASSLIB。后者(ASSLIB)也应该出现在PERXASLB中。如果不是,那就是例外。

我需要一种方法来查找所有异常记录,并使用以下内容向我显示ASSLIB_ID和PERSON_ID:

Example:
PERSON - PERSON_ID
P1 John
P2 Jane

ASSLIB - ASSLIB_ID
A1
A2
A3
A4
A5

REVEXP - REVEXP_ID | ASSLIB_ID (FK)
E1 | A1
E2 | A2
E8 | NULL
E9 | NULL

PERXASLB - PERSON_ID | ASSLIB_ID
P1 | A1
P1 | A2
P1 | A3
P1 | A4
P2 | A5



PERXRVEX - PERSON_ID | REVEXP_ID
P1 | E1
P1 | E2
P1 | E8
P2 | E1 ===> Exception to show in my report as E1 has parent A1 based on REVEXP but P2 does not have A1 based on PERXASLB
P2 | E2 ===> Exception to show in my report as E2 has parent A2 based on REVEXP but P2 does not have A2
P2 | E9

1 个答案:

答案 0 :(得分:1)

喜欢什么?

Select * 
from PERXRVEX px
INNER JOIN REVEXP rp on rp.REVEXP_ID = px.REVEXP_ID
LEFT JOIN PERXASLB pb on pb.PERSON_ID = px.PERSON_ID
                     AND pb.ASSLIB_ID= rp.ASSLIB_ID
WHERE pb.ASSLIB_ID IS NULL