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行があります。