回 帖 发 新 帖 刷新版面

主题:Left outer join出现的错误

由于在打印report的时候出现了连续两条重复数据被打印出来的情况, 所以我就检查了下foxpro里提取数据的code. 现在发现一个很奇怪的现象. 下面用到了LEFT OUTER JOIN的SQL command, 当在fdcif中可以找到和tmpmat中有相同的acno的数据时(tmpmat.acno=fdcif.acno成立). 打印report的情况就很正常. 但是当在fdcif找不到和tmpmat相同的acno数据时, 就会出现重复打印两次的结果.

举例: tmpmat cursor: acno   depno   prinamt
                      1      25       123
                      2      19       2139
             fdcif:  acno   depno   customNum
                      1      25       s111
                      3      20       s234 

当acno=1时, 由于在fdcif中可以找到匹配的acno, 所以一切正常, 只打印一次

1     25    123      s111

当acno =2 时, 由于在fdcif中找不到匹配的acno, 就会连续打印出同样的两条数据

2       19      2139    Null
2       19      2139    Null

请教大家原因, 按照我的理解, outer join不应该出现这样的情况啊,谢谢

SELECT acno, depno, prinamt, matdate, ccycde, autorenew, pledged, prodtyp ;
    FROM fddata ;
    WHERE  &mcond ;
    INTO CURSOR tmpmat


IF _TALLY > 0 THEN
    SELECT tmpmat.*, cusfnm1, cusfnm2, cusfnm3, phoneno, extpage, faxno ;
          FROM tmpmat LEFT OUTER JOIN FDCIF ;
          ON tmpmat.acno = fdcif.acno ;
          ORDER BY matdate, tmpmat.acno;
          INTO CURSOR repcsr

    REPORT form repmat noconsole TO PRINTER PROMPT preview in screen

ELSE
    =messagebox("No Record Found!")
ENDIF

回复列表 (共2个回复)

沙发

怎么没人帮帮忙啊?? 谢谢各位了

板凳

这个论坛没人发言的吗???郁闷死了

我来回复

您尚未登录,请登录后再回复。点此登录或注册