Reuben Cummings <reub...@gmail.com> writes:

>>>>> SELECT
>>>>>   entries.invoice
>>>>> 
>>>>>   FROM entries
>>>>>   LEFT OUTER JOIN invoices ON entries.invoice = invoices.guid
>>>>>   WHERE invoices.guid IS NULL
>>>>>   GROUP BY entries.invoice
>>>> 
>>>> Do you really need the join here?
>>> 
>>> Yes. Since the orphan entries are identical to the non-orphan entries,
>>> the only way to filter them out is to join on the invoices table and
>>> exclude all the entries that match. That leaves entries with
>>> non-matching invoices... the orphan entries.
>> 
>> Really?  Why can't you just do:
>> 
>>  SELECT ... FROM entries where entries.invoice IS NULL?
>
> Because entries.invoices isn't null. Even the orphan entries have an invoice 
> guid. It just that these guids are not present in the invoices table.

Oh, so the issue is that there was an Invoice that was created in RAM
but never committed.  I see.  That could never happen through the GUI,
but the importer clearly bypasses the GUI.  So the Entries have a
reference to a non-existing Invoice.   Very Interesting.

Thanks for working through this with me.

-derek

-- 
       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warl...@mit.edu                        PGP key available
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to