2012-09-18 100 views
0

我的SQL數據庫有三列; KeyTopicValue。有重複的主題具有不同的值。下面是一個示例:使用列數據作爲鍵的Perl哈希陣列

Key Topic Value 
----- ----- ----- 
1  Book  20 
2  Toy  10 
3  Toy  30 
4  Pet  100 
5  Book  15 
.  .   . 
.  .   . 

使用Perl,如何創建從柱Topic%Topic)的散列,在Topic使用每個唯一密鑰作爲具有相應的值,其元素的數組:@Book = 20, 15, ...@Toy = 10, 30, ...@Pet = 100, ...

+0

您發佈的表的兩個版本不可讀。固定。 – ikegami

+0

但是你的問題本身需要修復。對於初學者來說,唯一的密鑰不能是一個數組。你能澄清一下嗎? – ikegami

回答

1

我想你想的主題,這裏的值與值這樣一個話題數組的引用鍵控哈希值。

my %values_by_topic; 
my $sth = $dbh->prepare('SELECT Topic, Value FROM Table'); 
$sth->execute(); 
while (my $row = $sth->fetch()) { 
    my ($topic, $value) = @$row; 
    push @{ $values_by_topic{$topic} }, $value; 
} 
+0

當然,'$ dbh'是使用'DBI-> connect'創建的句柄。 – ikegami

+0

謝謝!這是我正在尋找的。 – user1652974

+0

我有一個後續問題。你如何對每個主題的價值進行熵計算?我想根據它的熵值對主題進行排名。 – user1652974

0

MySQL的一面:

select Topic, group_concat(Value) as Value 
from t 
group by Topic