2012-09-18 66 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