由于多个左外连接而导致重复结果

时间:2017-02-08 03:20:52

标签: sql

我的查询如下

select DISTINCT
    wftransaction.PERSONID,
    pr.PRNUM, 
    pr.DESCRIPTION, 
    pr.PR1,
    prline.GLDEBITACCT, 
    wftransaction.TRANSDATE,
    prstatus.CHANGEBY
    prstatus.CHANGEDATE, 
    prstatus.STATUS, 
    prstatus.MEMO 
from pr
left outer join wftransaction pr.PRID = wftransaction.ORNERID and wftransaction.OWNERTABLE ='PR' 
left outer join prline on pr.PRNUM = prline.PRNUM 
left outer join prstatus on pr.PRNUM= prstatus.PRNUM

我的查询给出的结果有重复的结果。请帮我消除冗余/重复输出。

当我说明了这就是https://i.stack.imgur.com/I2jnN.jpg

我只应该看到2个具有相同“STATUS”的输出,即(COMPOSING)或(APPR),因为它们有不同的“GLDEBITACCT”,除此之外,不应该有更多重复。

This is the picture of my Code and Result Set

2 个答案:

答案 0 :(得分:0)

我认为你应该使用内连接,因为如果左连接使用的地方,表A中的所有数据将重复显示,因为表B有其外键,或者有时你可能缺少WHERE子句,这取决于你的查询,如果您可以将整个查询及其结构与预期结果粘贴,那么对其他人会更有帮助。

https://www.codeproject.com/kb/database/visual_sql_joins.aspx

答案 1 :(得分:0)

好主意是在查询中放置一个简单的DISTINCT子句

select DISTINCT
    wftransaction.PERSONID,
    pr.PRNUM, 
    pr.DESCRIPTION, 
    pr.PR1,
    prline.GLDEBITACCT, 
    wftransaction.TRANSDATE,
    prstatus.CHANGEBY
    prstatus.CHANGEDATE, 
    prstatus.STATUS, 
    prstatus.MEMO 
from pr
left outer join wftransaction pr.PRID = wftransaction.ORNERID and wftransaction.OWNERTABLE ='PR' 
left outer join prline on pr.PRNUM = prline.PRNUM 
left outer join prstatus on pr.PRNUM= prstatus.PRNUM