[Dbix-class] ping 'from' attribute doc author: you need to fix them

Matt S Trout dbix-class at trout.me.uk
Thu May 11 04:40:23 CEST 2006


Brandon Black wrote:
> On 5/10/06, Matt S Trout <dbix-class at trout.me.uk> wrote:
>> C<join> will usually do what you need and it is strongly recommended
>> that you
>> avoid using C<from> unless you cannot achieve the desired result using
>> C<join>.
>> And we really do mean "cannot", not just tried and failed. Attempting to use
>> this because you're having problems with C<join> is like trying to use x86
>> ASM because you've got a syntax error in your C. Trust us on this.
>>
>> Now, if you're still really, really sure you need to use this (and if you're
>> not 100% sure, ask the mailing list first), here's an explanation of how
>> this
>> works.
>>
>> The syntax is as follows -
>>
>>    [
>>      { <alias1> => <table1> },
>>      [
>>        { <alias2> => <table2>, -join_type => 'inner|left|right' },
>>        [], # nested JOIN (optional)
>>        { <table1.column1> => <table2.column2>, ... (more conditions) },
>>      ],
>>      # More of the above [ ] may follow for additional joins
>>    ]
>>
>>    <table1> <alias1>
>>    JOIN
>>      <table2> <alias2>
>>      [JOIN ...]
>>    ON <table1.column1> = <table2.column2>
>>    <more joins may follow>
>>
>>
>> If people can look over that and verify that it (a) makes sense, and (b)
>> is actually right, I'll commit that and it'll go out in the next release.
>>
> 
> Did you mean to put parentheses on the indented joins in sql version
> of that example, or not?  I have some rather complex cases of "FROM
> foo JOIN (bar LEFT JOIN baz ON (x = y)) ON (a = b) JOIN baz ON (m =
> n)" type stuff, which I think of as "nested joins" in SQL.  I only
> ever do complex stuff in PostgreSQL, so far all I know I'm using
> Pg-isms when I do that.  Or is that that the parens are
> uneccesary/optional in most SQL dialects?

No, it's mostly that if you can't figure out that if the [JOIN ...] bit 
is there then an extra bracket will be involved, you probably don't want 
to use that feature :)

More seriously, I think it'd clutter the example syntax more than it'd 
help anybody. I'm open to being dissuaded of this POV though.



More information about the Dbix-class mailing list