Do not define a computed field in an information object that contains the OPTIONAL keyword. Instead, define the computed field in a lower level information object.
SELECT dbo_CUSTOMERS.CUSTID AS CUSTID, dbo_CUSTOMERS.CONTACT_FIRST AS CONTACT_FIRST, dbo_CUSTOMERS.CONTACT_LAST AS CONTACT_LAST, dbo_CUSTOMERS.CITY AS CITY, dbo_ORDERS.SHIPBYDATE AS SHIPBYDATE, dbo_ORDERS.FORECASTSHIPDATE AS FORECASTSHIPDATE, dbo_CUSTOMERS.ADDRESS AS ADDRESS,
( dbo_ITEMS.PRICEQUOTE * dbo_ITEMS.QUANTITY ) AS Total
The ORDERS and ITEMS tables are not dropped from the query even though the OPTIONAL keyword is applied to both tables in MyInformationObject and the SELECT clause does not contain columns from either table. The tables are not dropped because in MyInformationObject the columns ITEMS.PRICEQUOTE and ITEMS.QUANTITY are used in a computation outside the join condition.
To avoid this situation, define the computed field in a lower level information object such as ITEMS.iob. MyInformationObject then contains the following query: