1

if ステートメントには条件が$item2 eq $itemto || $item eq $itemtoあり、true の場合は 1、そうでない場合は 0 を返します。しかし問題は、表 2 の要素を 1 つずつ分析していることです。これは私の目標ではありません。私がしたいのは、表 1 の各行を比較することです。表 1 には 2 つの項目 ($item$item) があり、表 2 全体で対応する項目を検索して、条件が true 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