Select distinct
From ClassDBI
Selecting Distinct Values
Problem:
You want the Class::DBI equivalent of "SELECT DISTINCT column FROM table;" For example, "SELECT DISTINCT address FROM photos WHERE projno=?"
Solution:
There isn't really an equivalent, as Class::DBI is about returning objects rather than values.
In this sort of case, people generally use Perl:
my %seen;
my @address = grep !$seen{$_}++, map $_->address,
Photo->search(projno => $value);
But you can also merrily write your own method to do this:
__PACKAGE__->set_sql(distinct_col_by_proj => <<);
SELECT DISTINCT(%s)
FROM __TABLE__
WHERE projno = ?
sub addresses_for_proj {
my ($class, $projno) = @_;
return $class->sql_distinct_col_by_proj('address')->select_col($projno);
}
Solution by Tony via list
Transcribed by Vince Veselosky

