In SQL a left join 'says' to take all rows in the table on the left and the matching ones on the right, with unmatch rows on the right set to null. Left and right took me a while but in SQL, the left would be TABLE1:
select * from TABLE1 left outer join table2 on table1.field=table2.field...
Table1 is on the left...hence left outer join. In Crystal I am guessing that if you set you tables up and then drag the linking field from the left table to the right table, and then set to the join type to outer, you get the left outer join, some one correct me if I am wrong (I use sql from stored procs exclusively in my reports).
I am not sure about the Select Expert statement, as the join is on purchase.part_id = part.id. If there is not a match on the table with this condition, all values in one of the tables are going to be null (not found).
What table do you want all of the information for? The other table may or may not contain matching information. If you are looking to have all info from purchase, and you left outer join to part, any part that does match an entry in purchase will have null as all of the field values, so part.commodity_code = null for all entries in purchase that don't have 'matching' part.id. So unfortunately, of course, they would be excluded.
Hope this helps...Hope I explained outer joins effectively