[Dbix-class] JOIN question

Bernhard Graf dbic2 at augensalat.de
Thu Nov 30 08:53:42 GMT 2006


Matt S Trout wrote:

> { -or => [ { 'chunks.id => undef' }, { 'chunks_2.id' => undef }, {
> 'chunks.id' => \'!= chunks2.id' } ] }
>
> i.e.
>
> WHERE (chunks.id IS NULL OR chunks_2.id IS NULL OR chunks.id !=
> chunks2.id)
>
> It's not amazingly elegant, which is why the JOIN ON syntax is

No. Does not work.

> generally preferred, but by and large you can move stuff in and ON
> clause into the WHERE clause or vice versa just fine - a LEFT JOIN is
> pretty much just a JOIN against all values of that table *plus* a row
> consisting entirely of NULLs.

Yeah. And I need the NULLs:
Your query only finds multi-part emails, because only for those
"chunks.id!=chunks_2.id" is true if this is in the WHERE part.

"chunks.id IS NULL OR chunks_2.id IS NULL" in the WHERE part is useless,
because they will never be NULL without "chunks.id!=chunks_2.id" in the
LEFT JOIN.

> This is why I hate it when people tell me something "must be"
> different to my suggestions without justification - if you don't
> explain *why* you think that, I can't tell you the bit you're missing
> :)

I'm still not convinced. ;-P

Anyway - is the patch I sent yesterday acceptable now?
-- 
Bernhard Graf



More information about the Dbix-class mailing list