0

mysql-databaseにフィールドを持つテーブルがあります

「名前」、「タイトル」、「cd_id」、「トラック」

エントリは次のようになります。

シューベルト| シンフォニーNr7| 27 | 2
ブラームス| シンフォニーNr1| 11 | 4
ブラームス| シンフォニーNr2| 27 | 4
ショスタコーヴィチ| ジャズ組曲第1番| 19 | 3

CDごとのトラック(cd_id)を取得するには、次のスクリプトを作成しました。

#!/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;

適切な選択クエリを使用してこれらの結果を直接取得することは可能ですか?

4

2 に答える 2

2
"SELECT cd_id, SUM(tracks) as tracks FROM my_table GROUP BY cd_id"

編集:GROUP BYで実行できる詳細情報やその他のことについては、こちらを参照してください:http: //dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

于 2010-02-05T13:29:07.563 に答える
-1

集計関数を使用する

  SELECT `cd_id`, SUM(`tracks`) AS s
    FROM `your_table`
GROUP BY `cd_id`
于 2010-02-05T13:29:58.273 に答える