SELECT EXTRDETL.cITEM AS ProdItem, ; NVL(EXTRLOT.cITEM, PADR("** NO SUCH LOT", 15)) AS LotItem, ; EXTRDETL.cPLOTNO, ; EXTRMAST.dEXTRDATE, ; EXTRMAST.cMACHINE, ; EXTRMAST.cSHIFT, ; IIF(EXTRDETL.cITEM == EXTRLOT.cITEM, .T., .F.) AS LOTMATCH ; FROM EXTRMAST ; JOIN EXTRDETL ; ON EXTRMAST.iID = EXTRDETL.iID ; LEFT OUTER JOIN EXTRLOT ; ON EXTRDETL.cPLOTNO = EXTRLOT.cPLOTNO ; WHERE NOT EMPTY(EXTRDETL.cITEM) ; AND EXTRMAST.dEXTRDATE BETWEEN m.pdStartDate AND m.pdEndDate ; AND EXTRDETL.cITEM <> EXTRLOT.cITEM ; INTO CURSOR _FRXQUERY ; ORDER BY 1, 2The expression "EXTRDETL.cITEM <> EXTRLOT.cITEM" in the WHERE clause is key here. In versions 5 and 6, if no records in EXTRLOT exist the <> operator considers .NULL. to be not equal to (ie, the left outer join will produce nulls for records that do not exist in EXTRLOT).