1

if 语句有条件$item2 eq $itemto || $item eq $itemto,如果为真则返回 1,否则返回 0。但问题是它正在逐一分析表2中的元素。这不是我的目标。我想要做的是比较表1的每一行,其中一个有2个项目($item$item)并在整个表2中搜索相应的项目,看看条件是否为真eq 1,否则为0。Perl脚本:

foreach my $itemto (@itemsto){
   if (grep {$item2 eq $itemto || $item eq $itemto} @itemsto) {
      $turncong = 1;
      $insert_turncong->execute($mn, $yr, $item, $item2, $turncong);}
   else {
      $turncong = 0;
   }
}

表格1)

  item   | item2  | value  | mn |  yr  | mn_yr  |  item_mn_yr     |  item2_mn_yr  
-------- +--------+--------+----+------+--------+---------------  +---------------
 Green   | Marble  | 140181 |  1 | 1998 | 1-1998 | Green-1-1998   | Marble-1-1998
 Green   | Tomato  | 162785 |  1 | 1998 | 1-1998 | Green-1-1998   | Tomato-1-1998
 Lime    | Marble  |  89307 |  1 | 1998 | 1-1998 | Lime-1-1998    | Marble-1-1998
 Lime    | Green   | 129488 |  1 | 1998 | 1-1998 | Lime-1-1998    | Green-1-1998
 Marble  | Green   | 140181 |  1 | 1998 | 1-1998 | Marble-1-1998  | Green-1-1998
 Marble  | Marble  |  77225 |  1 | 1998 | 1-1998 | Marble-1-1998  | Marble-1-1998
 Tomato  | Lime    | 104345 |  1 | 1998 | 1-1998 | Tomato-1-1998  | Lime-1-1998
 Tomato  | Green   | 162785 |  1 | 1998 | 1-1998 | Tomato-1-1998  | Green-1-1998

表 2) @itemsto

  item  |  yr  | mn |  item_mn_yr  
 -------+------+----+--------------
 Green  | 1998 |  1 | Green-1-1998
 Tomato | 1998 |  1 | Tomato-1-1998

当前方案的问题是:表 1 有 1000 行,表 2 有 15 行,结果表是 15000 行。

理想的情况是表 1 我有 1000 行,我唯一想做的就是添加一个结果为 0 或 1 的新列,新的结果表将有一个新列并且仍然有 1000 行。

4

0 回答 0