[CDBI] Aggregate functions in Sweet?
Matt S Trout
dbix-class at trout.me.uk
Mon Sep 19 17:29:43 BST 2005
On Mon, Sep 19, 2005 at 10:09:11AM -0400, Michael Peters wrote:
> > For example, I have a table "class" which is a class taught at some
> > "location", and locations have_a "region" like "North" or "South".
> > my $region = $class->location->region;
> > print $region->name;
> > So, now I want to have a list of regions, and show how many classes
> > are available in each region. A reasonable need.
> Completely reasonable, but not CDBI is not the right tool for that kind
> of job. Any kind of reporting or aggregation is best done with straight
> SQL/DBI. I sometimes like to include this methods in my data classes
> that are CDBI based, but you might want to separate them.
Class::DBI::View doesn't do a bad job, and if you used that and either the
AbstractSearch and DeepAbstractSearch plugins you could get at least the
Abstract-isation that way.
I've been thinking about adding support in DBIx::Class for more than one
resultset against a table (bearing in mind that dbic orients itself around
resultset/row more than table/record) such that you could define e.g.
SELECT foo, bar, baz, quux FROM tbl WHERE ...
SELECT foo, COUNT(baz) FROM tbl WHERE ... GROUP BY foo
SELECT DISTINCT(foo, bar) FROM tbl WHERE ...
etc. etc. with an API like
rather than the primitive
Suggestions and use-cases are very welcome; I've cross-posted this reply
to the dbix-class list so we can have a record of it over there as well.
Matt S Trout Specialists in perl consulting, web development, and
Technical Director UNIX/Linux systems architecture and automation. Mail
Shadowcat Systems Ltd. mst (at) shadowcatsystems.co.uk for more information
+ Help us build a better perl ORM: http://dbix-class.shadowcatsystems.co.uk/ +
More information about the ClassDBI