J'ai une table dans une base de données MySQL avec les champsSélectionnez la question requête
"name", "title", "cd_id", "pistes"
Les entrées ressemblent à ceci:
Schubert | Symphonie Nr 7 | 27 | 2 Brahms | Symphonie Nr 1 | 11 | 4 Brahms | Symphonie Nr 2 | 27 | 4 Shostakovich | Jazz Suite Nr 1 | 19 | 3
pour obtenir les pistes par cd (cd_id) Je vous ai écrit ce script:
#!/usr/bin/env perl
use warnings; use strict;
use DBI;
my $dbh = DBI->connect(
"DBI:mysql:database=my_db;",
'user', 'passwd', { RaiseError => 1 });
my $select_query = "SELECT cd_id, tracks FROM my_table";
my $sth = $dbh->prepare($select_query);
$sth->execute;
my %hash;
while (my $row = $sth->fetchrow_hashref) {
$hash{"$row->{cd_id}"} += $row->{tracks};
}
print "$_ : $hash{$_}\n" for sort { $a <=> $b } keys %hash;
Est-il possible d'obtenir ces résultats directement avec un n sélectionner une requête appropriée?
décompte obtenir le nombre de lignes pour chaque cd_id, pas la somme de la colonne des pistes. –
vous ne pouvez pas utiliser SUM (*), vous devez fournir la colonne que vous voulez résumer. –
hm, vous avez raison – knittl