[jifty-devel] Table join and "order by" a column of an external table

Henry Baragar Henry.Baragar at instantiated.ca
Tue Dec 12 08:52:09 EST 2006


On Tuesday, December 12 2006 02:58 am, Agent Zhang wrote:
> Hello,
>
> I've been trying very hard to translate the following SQL query to
> Jifty::DBI's terms:
>
>     select *
>     from messages, sessions
>     where messages.msg_session = sessions.id and
>           messages.content like "%FOO%"
>     order by sessions.begin_time desc, messages.session_offset asc;
>
> I had been expecting the following Perl code to work, but it didn't:
>
>     # $self is a Qooqle::Model::MessageCollection object
>     my $alias = $self->join(
>         column1 => 'msg_session',
>         table2 => 'sessions', column2 => 'id');
>     $self->limit(
>         column => 'content', value => "%FOO%", operator => 'LIKE',
>     );
>     $self->order_by(
>         {alias => $alias, column => 'begin_time', order => 'DESC'}
>         {column => 'session_offset', order => 'ASC'},
>     );
>
Untested, but transcripted from working code:

    my $alias = $self->alias("sessions");
    $self->join(
        alias1  => "main",      column1 => "msg_session",
        alias2  => $alias,       column2 => "id",
    );
    $self->limit(
        column => "content", operator => "like", value => '%FOO%',
    );
    $self->order_by(
        {alias => $aliase, column => 'begin_time', order => 'DESC'},
        {alias => 'main', column => 'session', order => 'ASC'},
    );

I am not sure which of the 'main's can be omitted.

Regards,
Henry


> Jifty::DBI::Collection generated something very weird for the "order by"
> clause:
>
>     ORDER BY main.session_offset ASC, sessions_1.min(begin_time) DESC
>
> And my PostgreSQL reported: 'ERROR:  schema "sessions_1" does not
> exist'. Oh well...I'm guessing the problem is that begin_time is not a
> column of the current table.
>
> Yeah, I know table joining has been discussed several times on this
> list before, but...any solutions to this problem? ;-)
>
> Cheers,
> Agent
> _______________________________________________
> jifty-devel mailing list
> jifty-devel at lists.jifty.org
> http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-devel


More information about the jifty-devel mailing list