>>>I'm often confused by whether I need to include all the fields I mention in my WHERE clauses when selecting fields for the result set, and it's just now coming to a head - perhaps someone here could clarify for me.
>>>
>>>Let's say for example I want a list of all the items ever purchased by a client, and those items are linked to the client number through a long tree:
>>>
>>>Clients ---- Invoices ---- InvDetail ---- Items
>>>
>>>Can I get this list by saying:
>>>
>>>SELECT Items.ItemName FROM Items, InvDetail, Invoices ;
>>> WHERE Invoices.ClientNo = "12345" ;
>>> AND InvDetail.InvoiceNo = Invoices.InvoiceNo ;
>>> AND Items.ItemNo=InvDetail.ItemNo ;
>>> ORDER BY 1 ;
>>> INTO CURSOR JustItems
>>>
>>>... or do I need to include clientno, both invoiceno's and both itemno's in the field list?????
>If I stick with the WHERE's to define the relationships, I need to include the fields in the field list, but if I do JOINs instead of WHEREs I won't have to???
I did that accidentally a couple of times back in 2.x, and it worked. Then I concluded you don't have to select all fields you use in the WHERE clause. Actually, you maintain two lists - the Where clause lists the conditions to pick the records, and the Select lists the fields to include in the resulting cursor. These two lists seem to be pretty independent.