>>
>>SELECT Billing_charges.*, Viscodes.ccode_description;
>> FROM ;
>> Billing_charges ;
>> LEFT OUTER JOIN VisCodes ;
>> ON Viscodes.ccode_value LIKE ( Billing_charges.crevenue_code+"%" );
>> AND Viscodes.ccategory_description LIKE ( "REVENUE_CODES%" )
>> WHERE Billing_charges.cbilling_main_fk = ( ?vp_cBilling_main_fk )
>>
>
>These two queries are supposed to be the same. Can you explain the difference between these two? It looks like yours works every time, while the original with IsNull sometimes fails to work. I can not understand it.
The difference is about timing. When you move the condition to the JOIN clause, VFP checks the category description before performing the outer join, so Billing_Charges records that fail that test get added to the result.
With the condition in the WHERE clause, they're not filtered out until after the join, so no extra records are added.
Tamar