こんにちは、みんな、
2 つの異なるデータ テーブルがあり、単語がもう一方のテーブルに存在するかどうかを検索して選択する必要があります。
Contains() を使用してみましたが、機能しません。助けてください
以下に例を示します。
dt1
dt2
| 犬とゴリラ |
| ネズミ、キリン |
| サメ、クジラ、ペンギン |
| ダチョウと鳥 |
| ライオンとトラ、ウシ |
結果 (太字のテキストが選択されます):
dt2
| 犬とゴリラ |
| ネズミ、キリン |
| サメ、クジラ、ペンギン |
| ダチョウと鳥 |
| ライオンとトラ、ウシ |
ここでは、あなたが探していることを実行する 1 つの方法を示します。結果を示す表の行 3 が間違って選択されていると思われることに注意してください。
Names Default To Here( 1 );
// Create the tables
dt1 = New Table( "Lookup", Add Rows( 5 ), New Column( "key", Character, Set Values( {"dog", "cat", "fish", "bird", "cow"} ) ) );
dt2 = New Table( "Base",
Add Rows( 5 ),
New Column( "Target", Character, Set Values( {"dog&gorilla", "mouse, giraffe", "shark, whale, penguin", "ostrich&bird", "lion&tiger,cow"} ) )
);
// Place all key values into a list
KeyList = dt1:key << get values;
// Loop across the keys and search each row of Target for the
// match
For Each( {val}, keyList,
For Each Row(
If( Contains( :Target, val ),
Row State( Row() ) = Selected State( 1 )
)
)
);

追加の質問ですが、この選択した行を他のテーブルとのマッチングに使用できますか?アップデートのように?
質問の意味がよく分かりません。ただし、選択した行だけを含むベーステーブルのサブセットを簡単に作成し、そのテーブルから別のテーブルを更新することができます。サブセットを作成するための JSL は次のとおりです。
dt3 = dt2 << Subset( selected columns( 0 ), selected rows( 1 ) );