szabgab has asked for the wisdom of the Perl Monks concerning the following question:

Using SQL::Abstract I m trying to build a query that looks something like this:

age <= 80 AND age >= 20 AND city = Jerusalem

but could not do so far.

%where = ( city => Jerusalem, age => [ {'<=', 80}, {'>=', 20}, ], );

seem not to generate the needed query. At least the results include values above 80. Setting

logic => 'and'

did not seem to help either.

Update:

Actually using directly SQL::Abstract the above code works and returns the correct query but I am using it through Class::DBI::Plugin::Pager.

my $pager = __PACKAGE__->pager( where => \@where, abstract_attr => {logic => 'and'} );

and the error message indicates that I don't get any part of the where clause:  WHERE   LIMIT 10 OFFSET 0

I don't seem to be able to retrieve the actual query from the $pager

Update 2

... and looking at the code of Class::DBI::Plugin::Pager the bug seem to be on line 197 where sub _init checks if the where parameter is a HASH...

Replies are listed 'Best First'.
Re: multiple restrictions with SQL::Abstract
by dragonchild (Archbishop) on Jan 07, 2005 at 16:43 UTC
    What does the SQL look like when you inspect it?

    Being right, does not endow the right to be rude; politeness costs nothing.
    Being unknowing, is not the same as being stupid.
    Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
    Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.

Re: multiple restrictions with SQL::Abstract
by daddyefsacks (Pilgrim) on Jan 07, 2005 at 17:08 UTC
    It looks like you're passing the where a reference to an array, dont you want:
    my $pager = __PACKAGE__->pager( where => \%where, abstract_attr => {logic => 'and'} );