Re: [CDBI] Group by and AbstractSearch
[prev]
[thread]
[next]
[Date index for 2005/10/21]
On Fri, Oct 21, 2005 at 07:48:00AM -0700, Bill Moseley wrote:
> > sub area_summary {
> > my $self = shift;
> > my $sql = SQL::Abstract->new();
> > my ($where, @bind) = $sql->where(@_);
> > return $self->sql_summarize($where)->select_val(@bind);
> > }
>
> Doesn't select_val() return just one value? Seem like in the case
> above you would define a TEMP column 'Count' and then search as
> normal with $class->search_summarize()
After some more doc reading, delving into the code, and some
experimentation:
search_summarize() wouldn't let me pass my arbitrary where clauses (it
accepts data for placeholders, but not string replacement)
sql_summarize() let's me pass along arbitrary string replacments, but
then I'm left with a statement handle. I can execute() it to fill my
placeholders, but then I'm outside my CDBI model.
By looking into how set_sql() works in CDBI, I came up with this which
appears to work just fine:
__PACKAGE__->set_sql( summarize =>
"select fips, provider_type, count(id) as Count
from __TABLE__
%s
group by fips, provider_type"
);
sub area_summary {
my $self = shift;
my $sql = SQL::Abstract->new();
my ($where, @bind) = $sql->where(@_);
return $self->sth_to_objects($self->sql_summarize($where), \@bind);
}
But again, I'm a little uncomfortable since sth_to_objects() is undocumented
(but not marked as internal)
Can someone provide me some info to say if this is the intended course or not?
--
SwiftOne / Brett Sanger
swiftone@xxxxxxxx.xxx
_______________________________________________
ClassDBI mailing list
ClassDBI@xxxxx.xxxxxxxxxxxxxxxx.xxx
http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi