2017-01-09 17 views
0

SQLiteを学び始めても、ループがないという事実に苦しんでいます。私は今私の質問への答えをある日のために探して、それを見つけることができませんでした。異なるテーブルの行の部分文字列を比較する方法

私はテーブル1とテーブル2の2つのテーブルを持っています。
表1には、文章を含む列があります。 "私はリンゴが好きです"。 Table2には複数の列があります。そのうちの1つはFruits(またはVeggy ...)で、「apple」と「banana」が含まれています。

食品をカテゴリに分類するTable1に列を追加する必要があります。

次の表を使用して:

 
Table1: 

Sentence 
---------------- 
I like apples. 
I hate bananas. 
I love cucumber. 

Table2: 

fruits  veggies 
------  -------- 
apple  cucumber 
banana  tomato 
grape 

結果TABLE1には、次のようになります。

 
Table1: 

Sentence    category 
----------------  -------- 
I like apples.  fruits 
I hate bananas.  fruits 
I love cucumber.  veggies 
+1

これは、特にtable2の恐ろしいテーブルデザインです。 –

+0

あなたの 'Table2'はリレーショナルではないようです。私は各列が別々のテーブルにあるべきだと思います。 –

+1

または、各エントリが果物や野菜を表すかどうかを示すインジケータが付いた1つのテーブル。 – TripeHound

答えて

1

それは、より良いデザインが2列categoryTable2nameを持っているだろう。とにかく

、列を追加するには、ALTER TABLEを使用します。

ALTER TABLE Table1 ADD COLUMN category; 

LIKE使用し、特定の文が特定のカテゴリのエントリに属しているかどうかを確認するには、次のカテゴリを割り当てるには

... WHERE Sentence LIKE '%apple%' ... 

を、カテゴリのすべてのエントリをcorrelated subqueryでチェックする必要があります。

UPDATE Table1 
SET category = 'fruit' 
WHERE EXISTS (SELECT * 
       FROM Table2 
       WHERE Table1.Sentence LIKE '%' || fruits || '%'); 

veggiesと同じ)

+0

ありがとう、これは私が必要としたものです。 – Birk

関連する問題