[Dbix-class] Naming columns in nested joins
Jon
dbix at bytabok.com
Wed May 24 12:10:57 CEST 2006
Hi,
I'm doing a nested with three tables:
member: (has_many member_books mb)
member_id
member_books (belongs to member, book)
member_id
book_id
relation
book (has many member_books mb)
book_id
My query I'm running is "What (distinct) books does members who wants the
book the current member has have?"
The way I see it this should be correct:
MemberBooks->search(
{
'me.relation' => 'has',
'me.member_id' => $self->member_id
})->search_related('book')->search_related ('mb',
{
'mb.relation' => 'wants',
'mb.member_id' => {'!=', $self->member_id}
}
)->search_related ('member')->search_related('mb',
{
'mb.relation' => 'has',
},
{ group_by => ['mb.book_id']}
);
But it results in:
SELECT mb_2.member_id, mb_2.book_id, mb_2.language, mb_2.shape,
mb_2.relation FROM member_books me JOIN book book ON ( book.book_id =
me.book_id ) LEFT JOIN member_books mb ON ( mb.book_id = book.book_id )
JOIN member member ON ( member.member_id = mb.member_id ) LEFT JOIN
member_books mb_2 ON ( mb_2.member_id = member.member_id ) WHERE ( ( (
mb.relation = ? ) AND ( ( ( mb.member_id != ? AND mb.relation = ? ) AND (
me.member_id = ? AND me.relation = ? ) ) ) ) ) GROUP BY mb.book_id LIMIT 10:
`has', `1', `wants', `1', `has'
Instead i have to change the last part to be:
->search_related('mb',
{
'mb_2.relation' => 'has',
},
{ group_by => ['mb_2.book_id']}
);
So my question is, am I doing something wrong here which makes DBIC
interpretate my query wrong, or am I supposed to keep track of the naming?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.rawmode.org/pipermail/dbix-class/attachments/20060524/465780d3/attachment.htm
More information about the Dbix-class
mailing list