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

Agent Zhang agentzh at gmail.com
Tue Dec 12 02:58:16 EST 2006


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'},
    );

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


More information about the jifty-devel mailing list