DBIx::Cookbook::Recipe::Searching::grouping - GROUP BY
SELECT first_name, last_name, COUNT(film_actors.actor_id) FROM actor INNER JOIN film_actors USING (actor_id) GROUP BY film_actors.actor_id
Sample Usage:
shell> ${orm}_cmd grouping # orm = dbic, skinny, rose, etc
package DBIx::Cookbook::DBIC::Command::grouping; use Moose; extends qw(MooseX::App::Cmd::Command); =for comment if the $attr below is confusing, see http://search.cpan.org/~ribasushi/DBIx-Class-0.08120/lib/DBIx/Class/ResultSet.pm#ATTRIBUTES =cut sub execute { my ($self, $opt, $args) = @_; my $where = {}; my $attr = { join => [ 'film_actors' ], select => [ qw/first_name last_name/, { count => 'film_actors.actor_id' } ], as => [ qw/first_name last_name film_count/ ], group_by => [ 'film_actors.actor_id' ] }; my $rs = $self->app->schema->resultset('Actor')->search($where, $attr); while (my $row = $rs->next) { use Data::Dumper; my %data = $row->get_columns; warn Dumper(\%data); } } 1;
To install DBIx::Cookbook, copy and paste the appropriate command in to your terminal.
cpanm
cpanm DBIx::Cookbook
CPAN shell
perl -MCPAN -e shell install DBIx::Cookbook
For more information on module installation, please visit the detailed CPAN module installation guide.